Index: /trunk/src/VBox/Additions/x11/undefined_xorg
===================================================================
--- /trunk/src/VBox/Additions/x11/undefined_xorg	(revision 55722)
+++ /trunk/src/VBox/Additions/x11/undefined_xorg	(revision 55723)
@@ -108,5 +108,5 @@
 RRCrtcNotify
 RRGetInfo
-RRScreenSizeNotify
+RRScreenSizeSet
 RRTellChanged
 setenv
Index: /trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.c
===================================================================
--- /trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.c	(revision 55722)
+++ /trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.c	(revision 55723)
@@ -1071,10 +1071,4 @@
             xf86ScrnToScreen(pScrn)->width = cx;
             xf86ScrnToScreen(pScrn)->height = cy;
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 14
-            xf86UpdateDesktopDimensions();
-#elif GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 12
-            screenInfo.width = cx;
-            screenInfo.height = cy;
-#endif
             adjustScreenPixmap(pScrn, cx, cy);
             vbvxSetSolarisMouseRange(cx, cy);
@@ -1124,5 +1118,11 @@
     if (!fLimitedContext)
     {
-        RRScreenSizeNotify(xf86ScrnToScreen(pScrn));
+        /* We use RRScreenSizeSet() here and not RRScreenSizeNotify() because
+         * the first also pushes the virtual screen size to the input driver.
+         * We were doing this manually by setting screenInfo.width and height
+         * and calling xf86UpdateDesktopDimensions() where appropriate, but this
+         * failed on Ubuntu 12.04.0 due to a problematic X server back-port. */
+        RRScreenSizeSet(xf86ScrnToScreen(pScrn), xf86ScrnToScreen(pScrn)->width, xf86ScrnToScreen(pScrn)->height,
+                        xf86ScrnToScreen(pScrn)->mmWidth, xf86ScrnToScreen(pScrn)->mmHeight);
         RRTellChanged(xf86ScrnToScreen(pScrn));
     }
