Index: /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp	(revision 53407)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp	(revision 53408)
@@ -135,7 +135,9 @@
         pState->cSizeHints = iDisplay + 1;
     }
-    if ((!fChangeOrigin || fEnabled) && cx != 0 && cy != 0)
-    {
-        pState->paSizeHints[iDisplay] = (cx & 0xffff) << 16 | (cy & 0xffff);
+    if (!fEnabled || (cx != 0 && cy != 0))
+    {
+        pState->paSizeHints[iDisplay] = (cx & 0x8fff) << 16 | (cy & 0x8fff);
+        if (!fEnabled)
+            pState->paSizeHints[iDisplay] = -1;
         XChangeProperty(pState->pDisplay, DefaultRootWindow(pState->pDisplay),
                         XInternAtom(pState->pDisplay, "VBOX_SIZE_HINTS", 0),
Index: /trunk/src/VBox/Additions/x11/vboxvideo/vboxutils.c
===================================================================
--- /trunk/src/VBox/Additions/x11/vboxvideo/vboxutils.c	(revision 53407)
+++ /trunk/src/VBox/Additions/x11/vboxvideo/vboxutils.c	(revision 53408)
@@ -253,8 +253,15 @@
         for (i = 0; i < prop->size && i < pVBox->cScreens; ++i)
         {
-            if (!((int32_t *)prop->data)[i])
+            if (((int32_t *)prop->data)[i] == 0)
                 continue;
-            pVBox->pScreens[i].aPreferredSize.cx = ((int32_t *)prop->data)[i] >> 16;
-            pVBox->pScreens[i].aPreferredSize.cy = ((int32_t *)prop->data)[i] & 0xffff;
+            else if (((int32_t *)prop->data)[i] < 0)
+                pVBox->pScreens[i].afDisabled = true;
+            else
+            {
+                pVBox->pScreens[i].aPreferredSize.cx =
+                    ((int32_t *)prop->data)[i] >> 16;
+                pVBox->pScreens[i].aPreferredSize.cy =
+                    ((int32_t *)prop->data)[i] & 0x8fff;
+            }
         }
 }
