Index: /trunk/src/VBox/Devices/Graphics/DevVGA.cpp
===================================================================
--- /trunk/src/VBox/Devices/Graphics/DevVGA.cpp	(revision 50551)
+++ /trunk/src/VBox/Devices/Graphics/DevVGA.cpp	(revision 50552)
@@ -5160,4 +5160,11 @@
     AssertRC(rc);
 
+    /* This method only works if the VGA device is in a VBE mode. */
+    if ((pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) == 0)
+    {
+        PDMCritSectLeave(&pThis->CritSect);
+        return VERR_INVALID_STATE;
+    }
+
     vga_draw_line = vga_draw_line_table[v * 4 + get_depth_index(u32DstBitsPerPixel)];
 
Index: /trunk/src/VBox/Main/src-client/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 50551)
+++ /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 50552)
@@ -2687,4 +2687,12 @@
                 {
                     RTMemFree(pu8Data);
+
+                    /* CopyRect can fail if VBVA was paused in VGA device, retry using the generic method. */
+                    if (   rc == VERR_INVALID_STATE
+                        && aScreenId == VBOX_VIDEO_PRIMARY_SCREEN)
+                    {
+                        rc = pDisplay->mpDrv->pUpPort->pfnTakeScreenshot(pDisplay->mpDrv->pUpPort,
+                                                                         ppu8Data, pcbData, pu32Width, pu32Height);
+                    }
                 }
             }
