Index: /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp
===================================================================
--- /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp	(revision 73697)
+++ /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp	(revision 73698)
@@ -1554,4 +1554,5 @@
     if (pReq->eventAck == VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST)
     {
+        uint32_t cDisplaysOut = 0;
         /* Remember which resolution the client has queried, subsequent reads
          * will return the same values. */
@@ -1561,21 +1562,32 @@
 
             pDCR->lastReadDisplayChangeRequest = pDCR->displayChangeRequest;
-            pDCR->fPending = false;
-        }
-
+
+            if (pDCR->fPending)
+            {
+                if (cDisplaysOut < cDisplays)
+                    pReq->aDisplays[cDisplaysOut] = pDCR->lastReadDisplayChangeRequest;
+
+                cDisplaysOut++;
+                pDCR->fPending = false;
+            }
+        }
+
+        pReq->cDisplays = cDisplaysOut;
         pThis->displayChangeData.fGuestSentChangeEventAck = true;
     }
-
-    /* Fill the guest request with monitor layout data. */
-    for (i = 0; i < cDisplays; ++i)
-    {
-        /* If not a response to a VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST, just
-         * read the last valid video mode hint. This happens when the guest X server
-         * determines the initial mode. */
-        DISPLAYCHANGEREQUEST const *pDCR = &pThis->displayChangeData.aRequests[i];
-        VMMDevDisplayDef const *pDisplayDef = pThis->displayChangeData.fGuestSentChangeEventAck ?
-                                                  &pDCR->lastReadDisplayChangeRequest :
-                                                  &pDCR->displayChangeRequest;
-        pReq->aDisplays[i] = *pDisplayDef;
+    else
+    {
+        /* Fill the guest request with monitor layout data. */
+        for (i = 0; i < cDisplays; ++i)
+        {
+            /* If not a response to a VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST, just
+             * read the last valid video mode hint. This happens when the guest X server
+             * determines the initial mode. */
+            DISPLAYCHANGEREQUEST const *pDCR = &pThis->displayChangeData.aRequests[i];
+            VMMDevDisplayDef const *pDisplayDef = pThis->displayChangeData.fGuestSentChangeEventAck ?
+                &pDCR->lastReadDisplayChangeRequest :
+                &pDCR->displayChangeRequest;
+            pReq->aDisplays[i] = *pDisplayDef;
+        }
     }
 
