diff --git a/graphics/path.c b/graphics/path.c
index 139a7d1ea20a28b8cd3b1d2728e638ed87096476..2a2769033d990307ce6b4f76cdb4f694449056fe 100644
--- a/graphics/path.c
+++ b/graphics/path.c
@@ -1578,6 +1578,19 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
     SetGraphicsMode(dc->hSelf, GM_ADVANCED);
     SetWorldTransform(dc->hSelf, &xform);
     SetGraphicsMode(dc->hSelf, graphicsMode);
+
+    /* If we've moved the current point then get its new position
+       which will be in device (MM_TEXT) co-ords, convert it to
+       logical co-ords and re-set it.  This basically updates
+       dc->CurPosX|Y so that their values are in the correct mapping
+       mode.
+    */
+    if(i > 0) {
+        POINT pt;
+        GetCurrentPositionEx(dc->hSelf, &pt);
+        DPtoLP(dc->hSelf, &pt, 1);
+        MoveToEx(dc->hSelf, pt.x, pt.y, NULL);
+    }
     return ret;
 }