Fixed moving and sizing of child windows.

diff --git a/windows/nonclient.c b/windows/nonclient.c
index ff43659..29f2a54 100644
--- a/windows/nonclient.c
+++ b/windows/nonclient.c
@@ -1874,9 +1874,6 @@
 	pt.y = wndPtr->rectWindow.top + rect.top + SYSMETRICS_CYSIZE/2;
 	hittest = HTCAPTION;
 	*capturePoint = pt;
-
-	if (wndPtr->dwStyle & WS_CHILD)
-	    ClientToScreen16( wndPtr->parent->hwndSelf, &pt );
     }
     else  /* SC_SIZE */
     {
@@ -1950,9 +1947,9 @@
     BOOL32    thickframe = HAS_THICKFRAME( wndPtr->dwStyle );
     BOOL32    iconic = wndPtr->dwStyle & WS_MINIMIZE;
     BOOL32    moved = FALSE;
+    DWORD     dwPoint = GetMessagePos ();
 
-    GetCursorPos16 (&pt);
-    capturePoint = pt;
+    capturePoint = pt = *(POINT16*)&dwPoint;
 
     if (IsZoomed32(hwnd) || !IsWindowVisible32(hwnd) ||
         (wndPtr->flags & WIN_MANAGED)) return;
@@ -2008,6 +2005,11 @@
 	mouseRect.top    = MAX( mouseRect.top, sizingRect.top+minTrack.y );
 	mouseRect.bottom = MIN( mouseRect.bottom, sizingRect.top+maxTrack.y );
     }
+    if (wndPtr->dwStyle & WS_CHILD)
+    {
+	MapWindowPoints32( wndPtr->parent->hwndSelf, 0, 
+		(LPPOINT32)&mouseRect, 2 );
+    }
     SendMessage16( hwnd, WM_ENTERSIZEMOVE, 0, 0 );
 
     if (GetCapture32() != hwnd) SetCapture32( hwnd );    
@@ -2047,9 +2049,8 @@
 	if ((msg.message != WM_KEYDOWN) && (msg.message != WM_MOUSEMOVE))
 	    continue;  /* We are not interested in other messages */
 
-	pt = msg.pt;
-	if (wndPtr->dwStyle & WS_CHILD)
-	    ScreenToClient16( wndPtr->parent->hwndSelf, &pt );
+	dwPoint = GetMessagePos ();
+	pt = *(POINT16*)&dwPoint;
 	
 	if (msg.message == WM_KEYDOWN) switch(msg.wParam)
 	{