Index: /trunk/include/VBox/VMMDev.h
===================================================================
--- /trunk/include/VBox/VMMDev.h	(revision 35988)
+++ /trunk/include/VBox/VMMDev.h	(revision 35989)
@@ -242,7 +242,7 @@
     uint32_t mouseFeatures;
     /** Mouse x position. */
-    uint32_t pointerXPos;
+    int32_t pointerXPos;
     /** Mouse y position. */
-    uint32_t pointerYPos;
+    int32_t pointerYPos;
 } VMMDevReqMouseStatus;
 AssertCompileSize(VMMDevReqMouseStatus, 24+12);
Index: /trunk/include/VBox/vmm/pdmifs.h
===================================================================
--- /trunk/include/VBox/vmm/pdmifs.h	(revision 35988)
+++ /trunk/include/VBox/vmm/pdmifs.h	(revision 35989)
@@ -1971,5 +1971,5 @@
      * @param   pyAbs           Pointer of result value, can be NULL
      */
-    DECLR3CALLBACKMEMBER(int, pfnQueryAbsoluteMouse,(PPDMIVMMDEVPORT pInterface, uint32_t *pxAbs, uint32_t *pyAbs));
+    DECLR3CALLBACKMEMBER(int, pfnQueryAbsoluteMouse,(PPDMIVMMDEVPORT pInterface, int32_t *pxAbs, int32_t *pyAbs));
 
     /**
@@ -1981,5 +1981,5 @@
      * @param   yAbs            New absolute Y position
      */
-    DECLR3CALLBACKMEMBER(int, pfnSetAbsoluteMouse,(PPDMIVMMDEVPORT pInterface, uint32_t xAbs, uint32_t yAbs));
+    DECLR3CALLBACKMEMBER(int, pfnSetAbsoluteMouse,(PPDMIVMMDEVPORT pInterface, int32_t xAbs, int32_t yAbs));
 
     /**
Index: /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp
===================================================================
--- /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp	(revision 35988)
+++ /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp	(revision 35989)
@@ -2177,5 +2177,5 @@
  * @param   pAbsY   Pointer of result value, can be NULL
  */
-static DECLCALLBACK(int) vmmdevQueryAbsoluteMouse(PPDMIVMMDEVPORT pInterface, uint32_t *pAbsX, uint32_t *pAbsY)
+static DECLCALLBACK(int) vmmdevQueryAbsoluteMouse(PPDMIVMMDEVPORT pInterface, int32_t *pAbsX, int32_t *pAbsY)
 {
     VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
@@ -2196,5 +2196,5 @@
  * @param   absY   New absolute Y position
  */
-static DECLCALLBACK(int) vmmdevSetAbsoluteMouse(PPDMIVMMDEVPORT pInterface, uint32_t absX, uint32_t absY)
+static DECLCALLBACK(int) vmmdevSetAbsoluteMouse(PPDMIVMMDEVPORT pInterface, int32_t absX, int32_t absY)
 {
     VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
@@ -2543,6 +2543,6 @@
     SSMR3PutU32(pSSM, pThis->hypervisorSize);
     SSMR3PutU32(pSSM, pThis->mouseCapabilities);
-    SSMR3PutU32(pSSM, pThis->mouseXAbs);
-    SSMR3PutU32(pSSM, pThis->mouseYAbs);
+    SSMR3PutS32(pSSM, pThis->mouseXAbs);
+    SSMR3PutS32(pSSM, pThis->mouseYAbs);
 
     SSMR3PutBool(pSSM, pThis->fNewGuestFilterMask);
@@ -2611,6 +2611,6 @@
     SSMR3GetU32(pSSM, &pThis->hypervisorSize);
     SSMR3GetU32(pSSM, &pThis->mouseCapabilities);
-    SSMR3GetU32(pSSM, &pThis->mouseXAbs);
-    SSMR3GetU32(pSSM, &pThis->mouseYAbs);
+    SSMR3GetS32(pSSM, &pThis->mouseXAbs);
+    SSMR3GetS32(pSSM, &pThis->mouseYAbs);
 
     SSMR3GetBool(pSSM, &pThis->fNewGuestFilterMask);
Index: /trunk/src/VBox/Devices/VMMDev/VMMDevState.h
===================================================================
--- /trunk/src/VBox/Devices/VMMDev/VMMDevState.h	(revision 35988)
+++ /trunk/src/VBox/Devices/VMMDev/VMMDevState.h	(revision 35989)
@@ -96,6 +96,6 @@
     uint32_t mouseCapabilities;
     /** absolute mouse position in pixels */
-    uint32_t mouseXAbs;
-    uint32_t mouseYAbs;
+    int32_t mouseXAbs;
+    int32_t mouseYAbs;
     /** Does the guest currently want the host pointer to be shown? */
     uint32_t fHostCursorRequested;
Index: /trunk/src/VBox/Main/include/MouseImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/MouseImpl.h	(revision 35988)
+++ /trunk/src/VBox/Main/include/MouseImpl.h	(revision 35989)
@@ -99,6 +99,6 @@
     HRESULT reportAbsEventToMouseDev(uint32_t mouseXAbs, uint32_t mouseYAbs,
                                  int32_t dz, int32_t dw, uint32_t fButtons);
-    HRESULT reportAbsEventToVMMDev(uint32_t mouseXAbs, uint32_t mouseYAbs);
-    HRESULT reportAbsEvent(uint32_t mouseXAbs, uint32_t mouseYAbs,
+    HRESULT reportAbsEventToVMMDev(int32_t mouseXAbs, int32_t mouseYAbs);
+    HRESULT reportAbsEvent(int32_t mouseXAbs, int32_t mouseYAbs,
                            int32_t dz, int32_t dw, uint32_t fButtons,
                            bool fUsesVMMDevEvent);
@@ -123,6 +123,6 @@
 
     uint32_t mfVMMDevGuestCaps;  /** We cache this to avoid access races */
-    uint32_t mcLastAbsX;
-    uint32_t mcLastAbsY;
+    int32_t mcLastAbsX;
+    int32_t mcLastAbsY;
     uint32_t mfLastButtons;
 
Index: /trunk/src/VBox/Main/src-client/MouseImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/MouseImpl.cpp	(revision 35988)
+++ /trunk/src/VBox/Main/src-client/MouseImpl.cpp	(revision 35989)
@@ -349,5 +349,5 @@
  * @returns   COM status code
  */
-HRESULT Mouse::reportAbsEventToVMMDev(uint32_t mouseXAbs, uint32_t mouseYAbs)
+HRESULT Mouse::reportAbsEventToVMMDev(int32_t mouseXAbs, int32_t mouseYAbs)
 {
     VMMDev *pVMMDev = mParent->getVMMDev();
@@ -375,5 +375,5 @@
  * @returns   COM status code
  */
-HRESULT Mouse::reportAbsEvent(uint32_t mouseXAbs, uint32_t mouseYAbs,
+HRESULT Mouse::reportAbsEvent(int32_t mouseXAbs, int32_t mouseYAbs,
                               int32_t dz, int32_t dw, uint32_t fButtons,
                               bool fUsesVMMDevEvent)
@@ -536,11 +536,4 @@
     HRESULT rc = convertDisplayRes(x, y, &mouseXAbs, &mouseYAbs, &fValid);
     if (FAILED(rc)) return rc;
-
-    /** @todo multi-monitor Windows guests expect this to be unbounded.
-     * Understand the issues involved and fix for the rest. */
-    /* if (mouseXAbs > 0xffff)
-        mouseXAbs = mcLastAbsX;
-    if (mouseYAbs > 0xffff)
-        mouseYAbs = mcLastAbsY; */
 
     fButtons = mouseButtonsToPDM(buttonState);
