Index: /trunk/include/VBox/HostServices/VBoxCrOpenGLSvc.h
===================================================================
--- /trunk/include/VBox/HostServices/VBoxCrOpenGLSvc.h	(revision 50318)
+++ /trunk/include/VBox/HostServices/VBoxCrOpenGLSvc.h	(revision 50319)
@@ -84,4 +84,5 @@
 /* Names of supported output redirect formats. */
 #define H3DOR_FMT_RGBA_TOPDOWN "H3DOR_FMT_RGBA_TOPDOWN"
+#define H3DOR_FMT_RGBA "H3DOR_FMT_RGBA"
 
 /* Comma separated list of output formats supported by the output redirect target. */
Index: /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp	(revision 50318)
+++ /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp	(revision 50319)
@@ -1774,4 +1774,5 @@
     bool fCreated;
     bool fFallback;
+    bool fTopDown;
 } H3DORInstance;
 
@@ -1802,4 +1803,10 @@
         {
             /* Accept it. */
+            p->fTopDown = true;
+        }
+        else if (RTStrICmp(pszFormat, H3DOR_FMT_RGBA) == 0)
+        {
+            /* Accept it. */
+            p->fTopDown = false;
         }
         else
@@ -1987,5 +1994,9 @@
     image.cbData = cbData;
     image.pvScanLine0 = (uint8_t *)pvData + (p->h - 1) * p->w * 4;
-    image.iScanDelta = -4 * p->w;
+    image.iScanDelta = 4 * p->w;
+    if (p->fTopDown)
+    {
+        image.iScanDelta = -image.iScanDelta;
+    }
 
     p->pThis->m_interfaceImage.VRDEImageUpdate (p->hImageBitmap,
@@ -2025,9 +2036,15 @@
     {
         /* Return a comma separated list of supported formats. */
-        static const char *pszSupportedFormats = H3DOR_FMT_RGBA_TOPDOWN;
-        uint32_t cbOut = (uint32_t)strlen(pszSupportedFormats) + 1;
+        uint32_t cbOut =   (uint32_t)strlen(H3DOR_FMT_RGBA_TOPDOWN) + 1
+                         + (uint32_t)strlen(H3DOR_FMT_RGBA) + 1;
         if (cbOut <= cbBuffer)
         {
-            memcpy(pvBuffer, pszSupportedFormats, cbOut);
+            char *pch = (char *)pvBuffer;
+            memcpy(pch, H3DOR_FMT_RGBA_TOPDOWN, strlen(H3DOR_FMT_RGBA_TOPDOWN));
+            pch += strlen(H3DOR_FMT_RGBA_TOPDOWN);
+            *pch++ = ',';
+            memcpy(pch, H3DOR_FMT_RGBA, strlen(H3DOR_FMT_RGBA));
+            pch += strlen(H3DOR_FMT_RGBA);
+            *pch++ = '\0';
         }
         else
