Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBufferQuartz2D.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBufferQuartz2D.cpp	(revision 37062)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIFrameBufferQuartz2D.cpp	(revision 37063)
@@ -188,5 +188,17 @@
         }
         else
+        {
+#ifdef RT_ARCH_AMD64
+            /* Not sure who to blame, but it seems on 64bit there goes
+             * something terrible wrong (on a second monitor) when directly
+             * using CGImageCreateWithImageInRect without making a copy. We saw
+             * something like this already with the scale mode. */
+            CGImageRef tmpImage = CGImageCreateWithImageInRect(m_image, CGRectMake(m_pMachineView->contentsX(), m_pMachineView->contentsY(), m_pMachineView->visibleWidth(), m_pMachineView->visibleHeight()));
+            subImage = CGImageCreateCopy(tmpImage);
+            CGImageRelease(tmpImage);
+#else
             subImage = CGImageCreateWithImageInRect(m_image, CGRectMake(m_pMachineView->contentsX(), m_pMachineView->contentsY(), m_pMachineView->visibleWidth(), m_pMachineView->visibleHeight()));
+#endif
+        }
         Assert(VALID_PTR(subImage));
         /* Clear the background (Make the rect fully transparent) */
@@ -329,5 +341,17 @@
         }
         else
+        {
+#ifdef RT_ARCH_AMD64
+            /* Not sure who to blame, but it seems on 64bit there goes
+             * something terrible wrong (on a second monitor) when directly
+             * using CGImageCreateWithImageInRect without making a copy. We saw
+             * something like this already with the scale mode. */
+            CGImageRef tmpImage = CGImageCreateWithImageInRect(m_image, ::darwinToCGRect(is));
+            subImage = CGImageCreateCopy(tmpImage);
+            CGImageRelease(tmpImage);
+#else
             subImage = CGImageCreateWithImageInRect(m_image, ::darwinToCGRect(is));
+#endif
+        }
         if (subImage)
         {
