--- gdevpsdf.c~	Wed Aug 26 15:52:53 1998
+++ gdevpsdf.c	Wed Aug 26 15:53:51 1998
@@ -32,6 +32,10 @@
 #include "scfx.h"
 #include "slzwx.h"
 #include "srlx.h"
+#include "math_.h"
+#include "ghost.h"
+#include "gzstate.h"
+#include "igstate.h"
 
 /* Structure descriptor */
 public_st_device_psdf();
@@ -500,7 +504,19 @@
 
 int
 psdf_setlinewidth(gx_device_vector *vdev, floatp width)
-{	pprintg1(gdev_vector_stream(vdev), "%g w\n", width);
+{
+	float xscale, yscale;
+
+	xscale = fabs(igs->ctm.xx);
+	yscale = fabs(igs->ctm.xy);
+
+
+	if (xscale == 0) /* if portrait */
+	  width = width*yscale;
+	else
+	  width = width*xscale;
+
+	pprintg1(gdev_vector_stream(vdev), "%g w\n", width);
 	return 0;
 }
 
@@ -527,11 +543,20 @@
   floatp offset)
 {	stream *s = gdev_vector_stream(vdev);
 	int i;
+	float scale, xscale, yscale;
+
+	xscale = fabs(igs->ctm.xx);
+	yscale = fabs(igs->ctm.xy);
+
+	if (xscale == 0) /* if portrait */
+	  scale = yscale;
+	else
+	  scale = xscale;
 
 	pputs(s, "[ ");
 	for ( i = 0; i < count; ++i )
-	  pprintg1(s, "%g ", pattern[i]);
-	pprintg1(s, "] %g d\n", offset);
+	  pprintg1(s, "%g ", pattern[i]*scale/vdev->y_pixels_per_inch);
+	pprintg1(s, "] %g d\n", offset*scale/vdev->x_pixels_per_inch);
 	return 0;
 }
 
