Index: /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_diff.c
===================================================================
--- /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_diff.c	(revision 53399)
+++ /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_diff.c	(revision 53400)
@@ -308,4 +308,6 @@
         {
             CRFBDataElement *el = &data->aElements[i];
+            bool fUseRenderBuffer =
+                (el->enmFormat == GL_STENCIL_INDEX || el->enmFormat == GL_DEPTH_COMPONENT || el->enmFormat == GL_DEPTH_STENCIL);
 #if 0
             char fname[200];
@@ -343,5 +345,9 @@
             }
 
-            diff_api.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, el->idFBO);
+            /* Bind to corresponding buffer. */
+            if (fUseRenderBuffer)
+                diff_api.BindRenderbufferEXT(GL_RENDERBUFFER_EXT, el->idFBO);
+            else
+                diff_api.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, el->idFBO);
 
             if (el->enmBuffer)
@@ -380,4 +386,10 @@
                 diff_api.Disable(GL_STENCIL_TEST);
             }
+
+            /* Bind to window system default buffer. */
+            if (fUseRenderBuffer)
+                diff_api.BindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
+            else
+                diff_api.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, 0);
         }
 
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c	(revision 53399)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c	(revision 53400)
@@ -1362,5 +1362,5 @@
     {
         pEl = &pData->aElements[pData->cElements];
-        pEl->idFBO = pMural && pMural->fRedirected ? pMural->aidFBOs[CR_SERVER_FBO_FB_IDX(pMural)] : 0;
+        pEl->idFBO = pMural->idDepthStencilRB;
         pEl->enmBuffer = 0; /* we do not care */
         pEl->posX = 0;
