Index: /trunk/src/VBox/Devices/Input/UsbMouse.cpp
===================================================================
--- /trunk/src/VBox/Devices/Input/UsbMouse.cpp	(revision 37787)
+++ /trunk/src/VBox/Devices/Input/UsbMouse.cpp	(revision 37788)
@@ -152,4 +152,7 @@
     /** Is this an absolute pointing device (tablet)? Relative (mouse) otherwise. */
     bool                isAbsolute;
+
+    /** Tablet coordinate shift factor for old and broken operating systems. */
+    uint8_t             u8CoordShift;
 
     /**
@@ -803,6 +806,6 @@
 
         report.btn = pThis->PtrDelta.btn;
-        report.cx  = u32X / 2;
-        report.cy  = u32Y / 2;
+        report.cx  = u32X >> pThis->u8CoordShift;
+        report.cy  = u32Y >> pThis->u8CoordShift;
         report.dz  = clamp_i8(pThis->PtrDelta.dZ);
 
@@ -1284,5 +1287,5 @@
      * Validate and read the configuration.
      */
-    rc = CFGMR3ValidateConfig(pCfg, "/", "Absolute", "Config", "UsbHid", iInstance);
+    rc = CFGMR3ValidateConfig(pCfg, "/", "Absolute|CoordShift", "Config", "UsbHid", iInstance);
     if (RT_FAILURE(rc))
         return rc;
@@ -1305,4 +1308,8 @@
     if (!pThis->Lun0.pDrv)
         return PDMUsbHlpVMSetError(pUsbIns, VERR_PDM_MISSING_INTERFACE, RT_SRC_POS, N_("HID failed to query mouse interface"));
+
+    rc = CFGMR3QueryU8Def(pCfg, "CoordShift", &pThis->u8CoordShift, 1);
+    if (RT_FAILURE(rc))
+        return PDMUsbHlpVMSetError(pUsbIns, rc, RT_SRC_POS, N_("HID failed to query shift factor"));
 
     return VINF_SUCCESS;
