diff --git a/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs b/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs
index 12461e96e..adaacd915 100644
--- a/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs
+++ b/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs
@@ -561,6 +561,18 @@ namespace Ryujinx.Graphics.Gpu.Memory
         /// <param name="size">Size in bytes</param>
         public void ExternalFlush(ulong address, ulong size)
         {
+            ulong maxAddress = Math.Max(address, Address);
+            ulong minEndAddress = Math.Min(address + size, Address + Size);
+
+            if (maxAddress >= minEndAddress)
+            {
+                // Access doesn't overlap.
+                return;
+            }
+
+            address = maxAddress;
+            size = minEndAddress - address;
+
             _context.Renderer.BackgroundContextAction(() =>
             {
                 var ranges = _modifiedRanges;