Index: /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDisplay.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDisplay.cpp	(revision 61619)
+++ /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxDisplay.cpp	(revision 61620)
@@ -460,4 +460,5 @@
 
     *pNumDevices = DevNum;
+    *pDevPrimaryNum = DevPrimaryNum;
 
     return NO_ERROR;
Index: /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHelpers.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHelpers.cpp	(revision 61619)
+++ /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHelpers.cpp	(revision 61620)
@@ -244,5 +244,23 @@
     }
 
-    memcpy (paRects, paNewRects, sizeof (RECTL) * nRects);
+    /* Primary rectangle must remain at 0,0. */
+    int32_t iOffsetX = paNewRects[uPrimary].left;
+    int32_t iOffsetY = paNewRects[uPrimary].top;
+    for (iRect = 0; iRect < nRects; iRect++)
+    {
+        paRects[iRect].left   = paNewRects[iRect].left   - iOffsetX;
+        paRects[iRect].right  = paNewRects[iRect].right  - iOffsetX;
+        paRects[iRect].top    = paNewRects[iRect].top    - iOffsetY;
+        paRects[iRect].bottom = paNewRects[iRect].bottom - iOffsetY;
+        DDCLOG((" [%d]: %d,%d %dx%d -> %d,%d %dx%d%s\n",
+                iRect,
+                paRects[iRect].left, paRects[iRect].top,
+                paRects[iRect].right - paRects[iRect].left,
+                paRects[iRect].bottom - paRects[iRect].top,
+                paNewRects[iRect].left, paNewRects[iRect].top,
+                paNewRects[iRect].right - paNewRects[iRect].left,
+                paNewRects[iRect].bottom - paNewRects[iRect].top,
+                iRect == uPrimary? " <- primary": ""));
+    }
     return;
 }
