diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Path.java b/bundles/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Path.java
index 0855bbf..3ae25f4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Path.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cairo/org/eclipse/swt/graphics/Path.java
@@ -557,6 +557,12 @@
  */
 public PathData getPathData() {
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
+	PathData result = getPathDataInPixels();
+	result.points = DPIUtil.autoScaleDown(result.points);
+	return result;
+}
+
+PathData getPathDataInPixels() {
 	long /*int*/ copy = Cairo.cairo_copy_path(handle);
 	if (copy == 0) SWT.error(SWT.ERROR_NO_HANDLES);
 	cairo_path_t path = new cairo_path_t();
@@ -726,16 +732,16 @@
 	for (int i = 0, j = 0; i < types.length; i++) {
 		switch (types[i]) {
 			case SWT.PATH_MOVE_TO:
-				moveToInPixels(points[j++], points[j++]);
+				moveTo(points[j++], points[j++]);
 				break;
 			case SWT.PATH_LINE_TO:
-				lineToInPixels(points[j++], points[j++]);
+				lineTo(points[j++], points[j++]);
 				break;
 			case SWT.PATH_CUBIC_TO:
-				cubicToInPixels(points[j++], points[j++], points[j++], points[j++], points[j++], points[j++]);
+				cubicTo(points[j++], points[j++], points[j++], points[j++], points[j++], points[j++]);
 				break;
 			case SWT.PATH_QUAD_TO:
-				quadToInPixels(points[j++], points[j++], points[j++], points[j++]);
+				quadTo(points[j++], points[j++], points[j++], points[j++]);
 				break;
 			case SWT.PATH_CLOSE:
 				close();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java
index 7b845f2..82095e4 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Path.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -506,6 +506,12 @@
  */
 public PathData getPathData() {
 	if (isDisposed()) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
+	PathData result = getPathDataInPixels();
+	result.points = DPIUtil.autoScaleDown(result.points);
+	return result;
+}
+
+PathData getPathDataInPixels() {
 	int count = Gdip.GraphicsPath_GetPointCount(handle);
 	byte[] gdipTypes = new byte[count];
 	float[] points = new float[count * 2];
@@ -577,16 +583,16 @@
 	for (int i = 0, j = 0; i < types.length; i++) {
 		switch (types[i]) {
 			case SWT.PATH_MOVE_TO:
-				moveToInPixels(points[j++], points[j++]);
+				moveTo(points[j++], points[j++]);
 				break;
 			case SWT.PATH_LINE_TO:
-				lineToInPixels(points[j++], points[j++]);
+				lineTo(points[j++], points[j++]);
 				break;
 			case SWT.PATH_CUBIC_TO:
-				cubicToInPixels(points[j++], points[j++], points[j++], points[j++], points[j++], points[j++]);
+				cubicTo(points[j++], points[j++], points[j++], points[j++], points[j++], points[j++]);
 				break;
 			case SWT.PATH_QUAD_TO:
-				quadToInPixels(points[j++], points[j++], points[j++], points[j++]);
+				quadTo(points[j++], points[j++], points[j++], points[j++]);
 				break;
 			case SWT.PATH_CLOSE:
 				close();
