diff --git a/xc/programs/Xserver/vnc/vncHooks.cc b/xc/programs/Xserver/vnc/vncHooks.cc
index d040e4f..34c7aca 100644
--- a/xc/programs/Xserver/vnc/vncHooks.cc
+++ b/xc/programs/Xserver/vnc/vncHooks.cc
@@ -504,21 +504,22 @@
   vncHooksScreenPtr vncHooksScreen = ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr); 
   BoxRec box;
   PictureScreenPtr ps = GetPictureScreen(pScreen);
+  rfb::Rect rect1, rect2;
 
-  // For some reason, this hook is sometimes called with a negative
-  // xDst. This causes graphics errors, as well as error messages of
-  // the type:
-  // ComparingUpdateTracker: rect outside fb (-47,76-171,89)
-  // I've never observed a negative yDst, but let's check it anyway. 
-  if ((xDst >= 0) && (yDst >= 0)) {
-      box.x1 = pDst->pDrawable->x + xDst;
-      box.y1 = pDst->pDrawable->y + yDst;
-      box.x2 = box.x1 + width;
-      box.y2 = box.y1 + height;
-
-      RegionHelper changed(pScreen, &box, 0);
-      vncHooksScreen->desktop->add_changed(changed.reg);
-  } 
+  rect1.setXYWH(pDst->pDrawable->x + xDst,
+		pDst->pDrawable->y + yDst,
+		width,
+		height);
+      
+  rect2 = rect1.intersect(vncHooksScreen->desktop->getRect());
+  if (!rect2.is_empty()) {
+    box.x1 = rect2.tl.x;
+    box.y1 = rect2.tl.y;
+    box.x2 = rect2.br.x;
+    box.y2 = rect2.br.y;
+    RegionHelper changed(pScreen, &box, 0);
+    vncHooksScreen->desktop->add_changed(changed.reg);
+  }
 
   ps->Composite = vncHooksScreen->Composite;
   (*ps->Composite)(op, pSrc, pMask, pDst, xSrc, ySrc,
