[gs-commits] ghostpdl branch, master, updated. jbig2dec-0.14-1778-gc64d06d

[email protected] (Robin Watts) Thu, 31 Oct 2019 11:08:07 +0000 (UTC)
Newsgroups gmane.comp.printing.ghostscript.cvs
Message-ID <[email protected]>
The ghostpdl branch, master has been updated
       via  c64d06deea998199a0e30180fd884286b4b2256c (commit)
       via  bf72f1a3dd5392ee8291e3b1518a0c2c5dc6ba39 (commit)
       via  fa7f0cde80ce734ddc22bde34d121c1be5c7deb4 (commit)
       via  f1fd4a73480c5a2f900b1541b45a62ffcc75e12d (commit)
       via  67a101f3eb888bc651cc13bfb06280a669a84967 (commit)
      from  4fcbece468706e0e89ed2856729b2ccacbc112be (commit)

----------------------------------------------------------------------
commit c64d06deea998199a0e30180fd884286b4b2256c
Author: Robin Watts <[email protected]>
Date:   Thu Oct 31 10:33:10 2019 +0000

    Nobble various uses of "time" in the code in CLUSTER builds.
    
    This causes the bjccolor device at least to give indeterminate
    results. Nobbling the rest won't hurt.

diff --git a/contrib/eplaser/gdevescv.c b/contrib/eplaser/gdevescv.c
index afcbdfd..a13afef 100644
--- a/contrib/eplaser/gdevescv.c
+++ b/contrib/eplaser/gdevescv.c
@@ -969,7 +969,11 @@ escv_beginpage(gx_device_vector * vdev)
     {
       time_t t;
 
+#ifdef CLUSTER
+      memset(&t, 0, sizeof(t));
+#else
       time(&t);
+#endif
 
       lputs(s, " DATE=\"");
       {
@@ -977,7 +981,11 @@ escv_beginpage(gx_device_vector * vdev)
         char   str[32];
         size_t i;
 
+#ifdef CLUSTER
+        memset(&tm, 0, sizeof(tm));
+#else
         tm =  localtime( &t );
+#endif
         i = strftime(str, 30, "%Y/%m/%d %H:%M:%S", tm);
         if ( 30 >= i )
           str[i] = '\0';
diff --git a/contrib/gdevbjca.c b/contrib/gdevbjca.c
index 3573f55..142ddee 100644
--- a/contrib/gdevbjca.c
+++ b/contrib/gdevbjca.c
@@ -466,7 +466,11 @@ uint bjc_rand(gx_device_bjc_printer *dev)
 
 void bjc_init_tresh(gx_device_bjc_printer *dev, int rnd)
 {
+#ifdef CLUSTER
+    int i=0;
+#else
     int i=(int)(time(NULL) & 0x0ff);
+#endif
     float delta=40.64*rnd;
     for(;i>0;i--) bjc_rand(dev);
     for(i=-512; i<512; i++) dev->bjc_treshold[i+512] =
diff --git a/devices/gdevpdfimg.c b/devices/gdevpdfimg.c
index 31b42fb..0d85d4d 100644
--- a/devices/gdevpdfimg.c
+++ b/devices/gdevpdfimg.c
@@ -723,6 +723,12 @@ static int pdf_image_finish_file(gx_device_pdf_image *pdf_dev, int PCLm)
 
         stream_puts(pdf_dev->strm, "]\n/Type /Pages\n>>\nendobj\n");
 
+#ifdef CLUSTER
+        memset(&t, 0, sizeof(t));
+        memset(&tms, 0, sizeof(tms));
+        timesign = 'Z';
+        timeoffset = 0;
+#else
         time(&t);
         tms = *gmtime(&t);
         tms.tm_isdst = -1;
@@ -730,6 +736,7 @@ static int pdf_image_finish_file(gx_device_pdf_image *pdf_dev, int PCLm)
         timesign = (timeoffset == 0 ? 'Z' : timeoffset < 0 ? '-' : '+');
         timeoffset = any_abs(timeoffset) / 60;
         tms = *localtime(&t);
+#endif
 
         gs_sprintf(CreationDate, "(D:%04d%02d%02d%02d%02d%02d%c%02d\'%02d\')",
             tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday,
diff --git a/devices/gdevtifs.c b/devices/gdevtifs.c
index 722640a..2a52d3b 100644
--- a/devices/gdevtifs.c
+++ b/devices/gdevtifs.c
@@ -404,8 +404,13 @@ int tiff_set_fields_for_printer(gx_device_printer *pdev,
         time_t t;
         char dateTimeValue[20];
 
+#ifdef CLUSTER
+        memset(&t, 0, sizeof(t));
+        memset(&tms, 0, sizeof(tms));
+#else
         time(&t);
         tms = *localtime(&t);
+#endif
         gs_sprintf(dateTimeValue, "%04d:%02d:%02d %02d:%02d:%02d",
                 tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday,
                 tms.tm_hour, tms.tm_min, tms.tm_sec);
diff --git a/devices/vector/gdevpdfe.c b/devices/vector/gdevpdfe.c
index 88ca7ac..877b7b1 100644
--- a/devices/vector/gdevpdfe.c
+++ b/devices/vector/gdevpdfe.c
@@ -202,8 +202,13 @@ pdf_xmp_time(char *buf, int buf_length)
     time_t t;
     char buf1[4+1+2+1+2+1]; /* yyyy-mm-dd\0 */
 
+#ifdef CLUSTER
+    memset(&t, 0, sizeof(t));
+    memset(&tms, 0, sizeof(tms));
+#else
     time(&t);
     tms = *localtime(&t);
+#endif
     gs_sprintf(buf1,
             "%04d-%02d-%02d",
             tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday);
diff --git a/devices/vector/gdevpsu.c b/devices/vector/gdevpsu.c
index 10a13d9..094ff94 100644
--- a/devices/vector/gdevpsu.c
+++ b/devices/vector/gdevpsu.c
@@ -186,8 +186,13 @@ psw_begin_file_header(gp_file *f, const gx_device *dev, const gs_rect *pbbox,
         time_t t;
         struct tm tms;
 
+#ifdef CLUSTER
+        memset(&t, 0, sizeof(t));
+        memset(&tms, 0, sizeof(tms));
+#else
         time(&t);
         tms = *localtime(&t);
+#endif
         fprintf(f, "%%%%CreationDate: %d/%02d/%02d %02d:%02d:%02d\n",
                 tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday,
                 tms.tm_hour, tms.tm_min, tms.tm_sec);

----------------------------------------------------------------------
commit bf72f1a3dd5392ee8291e3b1518a0c2c5dc6ba39
Author: Robin Watts <[email protected]>
Date:   Thu Oct 31 10:31:24 2019 +0000

    Fix valgrind problems with gdevbjca.c
    
    2 problems here. Firstly, we could access off the end of a row
    while looking for runs. Change the indexing to fix this.
    
    Secondly, we could overrun our gamma tables due to unexpectedly
    large values. Add some clamping.

diff --git a/contrib/gdevbjca.c b/contrib/gdevbjca.c
index a023f0e..3573f55 100644
--- a/contrib/gdevbjca.c
+++ b/contrib/gdevbjca.c
@@ -342,12 +342,14 @@ bjc_compress(const byte *row, uint raster, byte *compressed)
     register byte test, test2;
 
     test = *exam;
-    while ( exam < end_row ) {
-      test2 = *++exam;
+    while ( ++exam < end_row ) {
+      test2 = *exam;
       if ( test == test2 )
           break;
       test = test2;
     }
+    /* exam points to the byte that didn't match, or end_row
+     * if we ran out of data. */
 
     /* Find out how long the run is */
     end_dis = exam - 1;
@@ -655,12 +657,15 @@ FloydSteinbergDitheringC(gx_device_bjc_printer *dev,
         for( i=width; i>0; i--, row+=4, err_vect+=3) { /*separate components */
 
 /*                                               C     +       K           */
-            err_corrC = dev->bjc_gamma_tableC[ (*row)    + (*(row+3))]
-                          + dev->FloydSteinbergC;
-            err_corrM = dev->bjc_gamma_tableM[(*(row+1)) + (*(row+3))]
-                          + dev->FloydSteinbergM;
-            err_corrY = dev->bjc_gamma_tableY[(*(row+2)) + (*(row+3))]
-                          + dev->FloydSteinbergY;
+            int v = row[0] + row[3];
+            if (v > 255) v = 255;
+            err_corrC = dev->bjc_gamma_tableC[v] + dev->FloydSteinbergC;
+            v = row[1] + row[3];
+            if (v > 255) v = 255;
+            err_corrM = dev->bjc_gamma_tableM[v] + dev->FloydSteinbergM;
+            v = row[2] + row[3];
+            if (v > 255) v = 255;
+            err_corrY = dev->bjc_gamma_tableY[v] + dev->FloydSteinbergY;
 
             if(err_corrC > 4080 && limit_extr) err_corrC = 4080;
             if(err_corrM > 4080 && limit_extr) err_corrM = 4080;
@@ -751,12 +756,15 @@ FloydSteinbergDitheringC(gx_device_bjc_printer *dev,
 
         for( i=width; i>0; i--, row-=4, err_vect-=3) {
 
-            err_corrC = dev->bjc_gamma_tableC[  (*row)   + (*(row+3))]
-                          + dev->FloydSteinbergC;
-            err_corrM = dev->bjc_gamma_tableM[(*(row+1)) + (*(row+3))]
-                          + dev->FloydSteinbergM;
-            err_corrY = dev->bjc_gamma_tableY[(*(row+2)) + (*(row+3))]
-                          + dev->FloydSteinbergY;
+            int v = row[0] + row[3];
+            if (v > 255) v = 255;
+            err_corrC = dev->bjc_gamma_tableC[v] + dev->FloydSteinbergC;
+            v = row[1] + row[3];
+            if (v > 255) v = 255;
+            err_corrM = dev->bjc_gamma_tableM[v] + dev->FloydSteinbergM;
+            v = row[2] + row[3];
+            if (v > 255) v = 255;
+            err_corrY = dev->bjc_gamma_tableY[v] + dev->FloydSteinbergY;
 
             if(err_corrC > 4080 && limit_extr) err_corrC = 4080;
             if(err_corrM > 4080 && limit_extr) err_corrM = 4080;

----------------------------------------------------------------------
commit fa7f0cde80ce734ddc22bde34d121c1be5c7deb4
Author: Robin Watts <[email protected]>
Date:   Thu Oct 31 10:29:32 2019 +0000

    Fix various incorrect casts in contrib devices.
    
    Various contrib devices cast a gx_color_index (a 32 or 64
    bit value typically containing 24 bits of data) down to
    a gx_color_value before manipulating it. This is a typo,
    copied into several places in the code. Correct it here.

diff --git a/contrib/gdevcd8.c b/contrib/gdevcd8.c
index 092a64d..5ceca0c 100644
--- a/contrib/gdevcd8.c
+++ b/contrib/gdevcd8.c
@@ -3817,7 +3817,7 @@ gdev_pcl_map_color_rgb(gx_device * pdev, gx_color_index color,
         break;
         case 16:
         {
-            gx_color_value c = (gx_color_value) color ^ 0xffff;
+            gx_color_index c = (gx_color_index) color ^ 0xffff;
             ushort value = c >> 11;
 
             prgb[0] = ((value << 11) + (value << 6) + (value << 1) +
@@ -3832,7 +3832,7 @@ gdev_pcl_map_color_rgb(gx_device * pdev, gx_color_index color,
         break;
         case 24:
         {
-            gx_color_value c = (gx_color_value) color ^ 0xffffff;
+            gx_color_index c = (gx_color_index) color ^ 0xffffff;
 
             prgb[0] = gx_color_value_from_byte(c >> 16);
             prgb[1] = gx_color_value_from_byte((c >> 8) & 0xff);
diff --git a/contrib/gdevdj9.c b/contrib/gdevdj9.c
index d2d3166..a77a102 100644
--- a/contrib/gdevdj9.c
+++ b/contrib/gdevdj9.c
@@ -2548,7 +2548,7 @@ gdev_pcl_map_color_rgb(gx_device * pdev,
             }
             break;
         case 16:{
-                gx_color_value c = (gx_color_value) color ^ 0xffff;
+                gx_color_index c = (gx_color_index) color ^ 0xffff;
                 ushort value = c >> 11;
 
                 prgb[0] = ((value << 11) + (value << 6) + (value << 1) +
@@ -2563,7 +2563,7 @@ gdev_pcl_map_color_rgb(gx_device * pdev,
             break;
 
         case 24:{
-                gx_color_value c = (gx_color_value) color ^ 0xffffff;
+                gx_color_index c = (gx_color_index) color ^ 0xffffff;
 
                 prgb[0] = gx_color_value_from_byte(c >> 16);
                 prgb[1] = gx_color_value_from_byte((c >> 8) & 0xff);
@@ -2572,7 +2572,7 @@ gdev_pcl_map_color_rgb(gx_device * pdev,
             break;
 
         case 32:{
-                gx_color_value w =
+                gx_color_index w =
                     gx_maxcol - gx_color_value_from_byte(color >> 24);
 
                 prgb[0] = w - gx_color_value_from_byte((color >> 16) & 0xff);
diff --git a/contrib/japanese/gdevmjc.c b/contrib/japanese/gdevmjc.c
index 6e8f2bd..281a512 100644
--- a/contrib/japanese/gdevmjc.c
+++ b/contrib/japanese/gdevmjc.c
@@ -1616,12 +1616,12 @@ gdev_mjc_map_color_rgb(gx_device *pdev, gx_color_index color,
           prgb[2] = -(c >> 2);
         }
       else
-        { gx_color_value value = (gx_color_value)color ^ 0xff;
+        { gx_color_index value = (gx_color_index)color ^ 0xff;
           prgb[0] = prgb[1] = prgb[2] = (value << 8) + value;
         }
     break;
   case 16:
-    { gx_color_value c = (gx_color_value)color ^ 0xffff;
+    { gx_color_index c = (gx_color_index)color ^ 0xffff;
       ushort value = c >> 11;
       prgb[0] = ((value << 11) + (value << 6) + (value << 1) +
                  (value >> 4)) >> (16 - gx_color_value_bits);
@@ -1634,7 +1634,7 @@ gdev_mjc_map_color_rgb(gx_device *pdev, gx_color_index color,
     }
     break;
   case 24:
-    { gx_color_value c = (gx_color_value)color ^ 0xffffff;
+    { gx_color_index c = (gx_color_index)color ^ 0xffffff;
       prgb[0] = gx_color_value_from_byte(c >> 16);
       prgb[1] = gx_color_value_from_byte((c >> 8) & 0xff);
       prgb[2] = gx_color_value_from_byte(c & 0xff);

----------------------------------------------------------------------
commit f1fd4a73480c5a2f900b1541b45a62ffcc75e12d
Author: Robin Watts <[email protected]>
Date:   Thu Oct 31 10:17:09 2019 +0000

    Fix warnings when building contrib on windows.
    
    MSVC is much more sensitive to casting types than gcc is, it
    seems. Accordingly avoid making doubles when we want floats, and
    make all casts down to int (or byte) explicit.

diff --git a/base/gxdevice.h b/base/gxdevice.h
index be6fd8a..03525a9 100644
--- a/base/gxdevice.h
+++ b/base/gxdevice.h
@@ -52,8 +52,8 @@
 #define DEFAULT_WIDTH_10THS_US_LETTER 85
 #define DEFAULT_HEIGHT_10THS_US_LETTER 110
 /* A4 paper (210mm x 297mm), we use 595pt x 842pt. */
-#define DEFAULT_WIDTH_10THS_A4 82.6389
-#define DEFAULT_HEIGHT_10THS_A4 116.9444
+#define DEFAULT_WIDTH_10THS_A4 82.6389f
+#define DEFAULT_HEIGHT_10THS_A4 116.9444f
 /* Choose a default.  A4 may be set in the makefile. */
 #ifdef A4
 #  define DEFAULT_WIDTH_10THS DEFAULT_WIDTH_10THS_A4
diff --git a/contrib/gdevbjc_.c b/contrib/gdevbjc_.c
index a5c7627..2c37650 100644
--- a/contrib/gdevbjc_.c
+++ b/contrib/gdevbjc_.c
@@ -220,7 +220,8 @@ const gx_device_bjc_printer gs_bjcmono_device =
 bjc_device(bjcmono_procs, "bjcmono",
            DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
            X_DPI, Y_DPI,
-           (3.4 / 25.4), (7.0 / 25.4), (3.4 / 25.4), (3.0 / 25.4),
+           (float)(3.4 / 25.4), (float)(7.0 / 25.4),
+           (float)(3.4 / 25.4), (float)(3.0 / 25.4),
            1,                   /* num components */
            1,                   /* depth  */
            1,                   /* max gray */
@@ -242,7 +243,8 @@ const gx_device_bjc_printer gs_bjcgray_device =
 bjc_device(bjcgray_procs, "bjcgray",
            DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
            X_DPI, Y_DPI,
-           (3.4 / 25.4), (7.0 / 25.4), (3.4 / 25.4), (3.0 / 25.4),
+           (float)(3.4 / 25.4), (float)(7.0 / 25.4),
+           (float)(3.4 / 25.4), (float)(3.0 / 25.4),
            1,                   /* num components */
            8,                   /* depth  */
            255,                 /* max gray */
@@ -264,7 +266,8 @@ const gx_device_bjc_printer gs_bjccmyk_device =
 bjc_device(bjc_cmykcolor_procs, "bjccmyk",
            DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
            X_DPI, Y_DPI,
-           (3.4 / 25.4), (7.0 / 25.4), (3.4 / 25.4), (3.0 / 25.4),
+           (float)(3.4 / 25.4), (float)(7.0 / 25.4),
+           (float)(3.4 / 25.4), (float)(3.0 / 25.4),
            4,                   /* num components */
            4,                   /* depth  */
            1,                   /* max gray */
@@ -286,7 +289,8 @@ const gx_device_bjc_printer gs_bjccolor_device =
 bjc_device(bjc_truecolor_procs, "bjccolor",
            DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS,
            X_DPI, Y_DPI,
-           (3.4 / 25.4), (7.0 / 25.4), (3.4 / 25.4), (3.0 / 25.4),
+           (float)(3.4 / 25.4), (float)(7.0 / 25.4),
+           (float)(3.4 / 25.4), (float)(3.0 / 25.4),
            4,                   /* num components */
            32,                  /* depth  */
            255,                 /* max gray */
@@ -570,8 +574,8 @@ bjc_print_page_mono(gx_device_printer * pdev, gp_file * file)
                   ((ppdev->ink & INK_K) ? 0x11: 0x10)); /* black or color */
     char ink   = 0x01; /* regular ink type */
     char compress = (ppdev->compress == true ? 0x01 : 0x00); /* compression or not */
-    int x_resolution = pdev->HWResolution[0];
-    int y_resolution = pdev->HWResolution[1];
+    int x_resolution = (int)pdev->HWResolution[0];
+    int y_resolution = (int)pdev->HWResolution[1];
     int length = 0/*x71*/, lm = 0/*x01*/, rm = 0/*x01*/, top = 0/*x50*/;
     byte inkc = ppdev->ink;
     byte mask_array[] = { 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe };
@@ -643,8 +647,8 @@ bjc_print_page_gray(gx_device_printer * pdev, gp_file * file)
                   ((ppdev->ink & INK_K) ? 0x11: 0x10)); /* black or color */
     char ink   = 0x01; /* regular ink type */
     char compress = (ppdev->compress == true ? 0x01 : 0x00); /* compression or not */
-    int x_resolution = pdev->HWResolution[0];
-    int y_resolution = pdev->HWResolution[1];
+    int x_resolution = (int)pdev->HWResolution[0];
+    int y_resolution = (int)pdev->HWResolution[1];
     int length = 0/*x71*/, lm = 0/*x01*/, rm = 0/*x01*/, top = 0/*x50*/;
     byte inkc = ppdev->ink;
     byte mask_array[] = { 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe };
@@ -730,8 +734,8 @@ bjc_print_page_cmyk(gx_device_printer * pdev, gp_file * file)
     char color = 0x10; /* color */
     char ink   = 0x01; /* regular ink type */
     char compress = (ppdev->compress == true ? 0x01 : 0x00); /* compression or not */
-    int x_resolution = pdev->HWResolution[0];
-    int y_resolution = pdev->HWResolution[1];
+    int x_resolution = (int)pdev->HWResolution[0];
+    int y_resolution = (int)pdev->HWResolution[1];
     int length = 0/*x71*/, lm = 0/*x01*/, rm = 0/*x01*/, top = 0/*x50*/;
     int plane;
     byte mask_array[] = { 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe };
@@ -851,8 +855,8 @@ bjc_print_page_color(gx_device_printer * pdev, gp_file * file)
     char color = 0x10; /* color */
     char ink   = 0x01; /* regular ink type */
     char compress = (ppdev->compress == true ? 0x01 : 0x00); /* compression or not */
-    int x_resolution = pdev->HWResolution[0];
-    int y_resolution = pdev->HWResolution[1];
+    int x_resolution = (int)pdev->HWResolution[0];
+    int y_resolution = (int)pdev->HWResolution[1];
     int length = 0/*x71*/, lm = 0/*x01*/, rm = 0/*x01*/, top = 0/*x50*/;
     byte mask_array[] = { 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe };
     byte lastmask = mask_array[pdev->width % 8];
diff --git a/contrib/gdevbjc_.h b/contrib/gdevbjc_.h
index de32a51..92f5448 100644
--- a/contrib/gdevbjc_.h
+++ b/contrib/gdevbjc_.h
@@ -135,8 +135,8 @@ typedef struct gx_device_bjc_printer_s gx_device_bjc_printer;
           xdpi, ydpi,\
           ncomp, depth, mg, mc, dg, dc,\
           -(lo) * (xdpi), -(to) * (ydpi),\
-          (lm) * 72.0, (bm) * 72.0,\
-          (rm) * 72.0, (tm) * 72.0\
+          (lm) * 72.0f, (bm) * 72.0f,\
+          (rm) * 72.0f, (tm) * 72.0f\
         ),\
         prn_device_body_rest_(print_page)
 
diff --git a/contrib/gdevcd8.c b/contrib/gdevcd8.c
index bc5a741..092a64d 100644
--- a/contrib/gdevcd8.c
+++ b/contrib/gdevcd8.c
@@ -438,10 +438,10 @@ static int (* const rescale_color_plane[2][2]) (int, const byte *, const byte *,
  * Drivers stuff.
  *
  */
-#define DESKJET_PRINT_LIMIT  0.04	/* 'real' top margin? */
+#define DESKJET_PRINT_LIMIT  0.04f	/* 'real' top margin? */
 /* Margins are left, bottom, right, top. */
-#define DESKJET_MARGINS_LETTER   0.25, 0.50, 0.25, 0.167
-#define DESKJET_MARGINS_A4       0.13, 0.46, 0.13, 0.04
+#define DESKJET_MARGINS_LETTER   0.25f, 0.50f, 0.25f, 0.167f
+#define DESKJET_MARGINS_A4       0.13f, 0.46f, 0.13f, 0.04f
 /* Define bits-per-pixel - default is 32-bit cmyk-mode */
 #ifndef BITSPERPIXEL
 #  define BITSPERPIXEL 32
@@ -891,20 +891,20 @@ hp_colour_open(gx_device * pdev)
 
     /* margins for DJ1600C from manual */
     static const float m_cdj1600[4] = {
-        0.25, 0.5, 0.25, 0.5
+        0.25f, 0.5f, 0.25f, 0.5f
     };
 
     /* margins for HP2200C */
     static const float chp2200_a4[4] = {
-        0.13, 0.46, 0.13, 0.08
+        0.13f, 0.46f, 0.13f, 0.08f
     };
     static const float chp2200_letter[4] = {
-        0.25, 0.46, 0.25, 0.08
+        0.25f, 0.46f, 0.25f, 0.08f
     };
 
     /* margins for DNJ500C */
     static const float cdnj500[4] = {
-        0.00, 0.00, 0.00, 0.00
+        0.00f, 0.00f, 0.00f, 0.00f
     };
 
     const float *m = (float *)0;
@@ -1091,13 +1091,13 @@ cdj850_put_params(gx_device * pdev, gs_param_list * plist)
     code = cdj_put_param_int(plist, "BitsPerPixel", &bpp, 1, 32, code);
     code = cdj_put_param_int(plist, "Quality", &quality, 0, 2, code);
     code = cdj_put_param_int(plist, "Papertype", &papertype, 0, 4, code);
-    code = cdj_put_param_float(plist, "MasterGamma", &mastergamma, 0.1, 9.0, code);
-    code = cdj_put_param_float(plist, "GammaValC", &gammavalc, 0.0, 9.0, code);
-    code = cdj_put_param_float(plist, "GammaValM", &gammavalm, 0.0, 9.0, code);
-    code = cdj_put_param_float(plist, "GammaValY", &gammavaly, 0.0, 9.0, code);
-    code = cdj_put_param_float(plist, "GammaValK", &gammavalk, 0.0, 9.0, code);
-    code = cdj_put_param_float(plist, "BlackCorrect", &blackcorrect, 0.0,
-                               9.0, code);
+    code = cdj_put_param_float(plist, "MasterGamma", &mastergamma, 0.1f, 9.0f, code);
+    code = cdj_put_param_float(plist, "GammaValC", &gammavalc, 0.0f, 9.0f, code);
+    code = cdj_put_param_float(plist, "GammaValM", &gammavalm, 0.0f, 9.0f, code);
+    code = cdj_put_param_float(plist, "GammaValY", &gammavaly, 0.0f, 9.0f, code);
+    code = cdj_put_param_float(plist, "GammaValK", &gammavalk, 0.0f, 9.0f, code);
+    code = cdj_put_param_float(plist, "BlackCorrect", &blackcorrect, 0.0f,
+                               9.0f, code);
 
     if (code < 0)
         return code;
@@ -1830,8 +1830,8 @@ cdnj500_print_page(gx_device_printer * pdev, gp_file * prn_stream)
     /*                      |Horz Res   |Vert Rez   |compr|orien|bits |planes*/
 
     /* x,y resolution for color planes, assume x=y */
-    int xres = cdj850->x_pixels_per_inch;
-    int yres = cdj850->y_pixels_per_inch;
+    int xres = (int)cdj850->x_pixels_per_inch;
+    int yres = (int)cdj850->y_pixels_per_inch;
 
     gs_memory_t *mem = pdev->memory;
     int width_in_pixels = pdev->width;
@@ -2002,7 +2002,7 @@ send_scan_lines(gx_device_printer * pdev,
     word rmask =
     ~(word) 0 << ((-pdev->width * misc_vars->storage_bpp) & (W * 8 - 1));
 
-    lend = pdev->height - (dev_t_margin(pdev) + dev_b_margin(pdev)) * y_dpi;
+    lend = (int)(pdev->height - (dev_t_margin(pdev) + dev_b_margin(pdev)) * y_dpi);
 
     error_values->c = error_values->m = error_values->y =
         error_values->k = 0;
@@ -3136,11 +3136,11 @@ cdj850_start_raster_mode(gx_device_printer * pdev, int paper_size,
     init.a[25] = cdj850->intensities;	/* Intensity levels yellow */
 
     /* black plane resolution */
-    assign_dpi(cdj850->x_pixels_per_inch, init.a + 2);
-    assign_dpi(cdj850->y_pixels_per_inch, init.a + 4);
+    assign_dpi((int)cdj850->x_pixels_per_inch, init.a + 2);
+    assign_dpi((int)cdj850->y_pixels_per_inch, init.a + 4);
     /* color plane resolution */
-    xres = cdj850->x_pixels_per_inch / (cdj850->xscal + 1);
-    yres = cdj850->y_pixels_per_inch / (cdj850->yscal + 1);
+    xres = (int)(cdj850->x_pixels_per_inch / (cdj850->xscal + 1));
+    yres = (int)(cdj850->y_pixels_per_inch / (cdj850->yscal + 1));
     /* cyan */
     assign_dpi(xres, init.a + 8);
     assign_dpi(yres, init.a + 10);
@@ -3195,11 +3195,11 @@ cdj880_start_raster_mode(gx_device_printer * pdev, int paper_size,
     init.a[25] = cdj850->intensities;	/* Intensity levels yellow */
 
     /* black plane resolution */
-    assign_dpi(cdj850->x_pixels_per_inch, init.a + 2);
-    assign_dpi(cdj850->y_pixels_per_inch, init.a + 4);
+    assign_dpi((int)cdj850->x_pixels_per_inch, init.a + 2);
+    assign_dpi((int)cdj850->y_pixels_per_inch, init.a + 4);
     /* color plane resolution */
-    xres = cdj850->x_pixels_per_inch / (cdj850->xscal + 1);
-    yres = cdj850->y_pixels_per_inch / (cdj850->yscal + 1);
+    xres = (int)(cdj850->x_pixels_per_inch / (cdj850->xscal + 1));
+    yres = (int)(cdj850->y_pixels_per_inch / (cdj850->yscal + 1));
     /* cyan */
     assign_dpi(xres, init.a + 8);
     assign_dpi(yres, init.a + 10);
@@ -3261,8 +3261,8 @@ chp2200_start_raster_mode(gx_device_printer * pdev, int paper_size,
     /*                      |Horz Res   |Vert Rez   |compr|orien|bits |planes*/
 
     /* x,y resolution for color planes, assume x=y */
-    int xres = cdj850->x_pixels_per_inch;
-    int yres = cdj850->y_pixels_per_inch;
+    int xres = (int)cdj850->x_pixels_per_inch;
+    int yres = (int)cdj850->y_pixels_per_inch;
     int width_in_pixels = cdj850->width;
 
     /* Exit from any previous language */
@@ -3322,7 +3322,7 @@ cdnj500_start_raster_mode(gx_device_printer * pdev, int paper_size,
                          gp_file * prn_stream)
 {
     /* x,y resolution for color planes, assume x=y */
-    int xres = cdj850->x_pixels_per_inch;
+    int xres = (int)cdj850->x_pixels_per_inch;
     float x = pdev->width  / pdev->x_pixels_per_inch * 10;
     float y = pdev->height / pdev->y_pixels_per_inch * 10;
 
@@ -3998,8 +3998,9 @@ static void
 cdj1600_start_raster_mode(gx_device_printer * pdev, int paper_size,
                           gp_file * prn_stream)
 {
-    uint raster_width = pdev->width -
-    pdev->x_pixels_per_inch * (dev_l_margin(pdev) + dev_r_margin(pdev));
+    uint raster_width = (int)(pdev->width -
+                              pdev->x_pixels_per_inch *
+                              (dev_l_margin(pdev) + dev_r_margin(pdev)));
 
     /* switch to PCL control language */
     gp_fputs("\033%-12345X@PJL enter language = PCL\n", prn_stream);
diff --git a/contrib/gdevdj9.c b/contrib/gdevdj9.c
index 1191a32..d2d3166 100644
--- a/contrib/gdevdj9.c
+++ b/contrib/gdevdj9.c
@@ -289,8 +289,8 @@ static int cdj970_write_trailer(gx_device *, gp_file *);
 
 #define DESKJET_PRINT_LIMIT  0.04       /* 'real' top margin? */
 /* Margins are left, bottom, right, top. */
-#define DESKJET_MARGINS_LETTER   0.25, 0.50, 0.25, 0.167
-#define DESKJET_MARGINS_A4       0.13, 0.46, 0.13, 0.04
+#define DESKJET_MARGINS_LETTER   0.25f, 0.50f, 0.25f, 0.167f
+#define DESKJET_MARGINS_A4       0.13f, 0.46f, 0.13f, 0.04f
 /* Define bits-per-pixel - default is 32-bit cmyk-mode */
 #ifndef BITSPERPIXEL
 #  define BITSPERPIXEL 32
@@ -652,18 +652,18 @@ cdj970_put_params(gx_device * pdev, gs_param_list * plist)
     code = cdj_put_param_int(plist, "Papertype", &papertype, 0, 4, code);
     code = cdj_put_param_int(plist, "Duplex", &duplex, 0, 2, code);
     code =
-        cdj_put_param_float(plist, "MasterGamma", &mastergamma, 0.1, 9.0,
+        cdj_put_param_float(plist, "MasterGamma", &mastergamma, 0.1f, 9.0f,
                             code);
     code =
-        cdj_put_param_float(plist, "GammaValC", &gammavalc, 0.0, 9.0, code);
+        cdj_put_param_float(plist, "GammaValC", &gammavalc, 0.0f, 9.0f, code);
     code =
-        cdj_put_param_float(plist, "GammaValM", &gammavalm, 0.0, 9.0, code);
+        cdj_put_param_float(plist, "GammaValM", &gammavalm, 0.0f, 9.0f, code);
     code =
-        cdj_put_param_float(plist, "GammaValY", &gammavaly, 0.0, 9.0, code);
+        cdj_put_param_float(plist, "GammaValY", &gammavaly, 0.0f, 9.0f, code);
     code =
-        cdj_put_param_float(plist, "GammaValK", &gammavalk, 0.0, 9.0, code);
+        cdj_put_param_float(plist, "GammaValK", &gammavalk, 0.0f, 9.0f, code);
     code =
-        cdj_put_param_float(plist, "BlackCorrect", &blackcorrect, 0.0, 9.0,
+        cdj_put_param_float(plist, "BlackCorrect", &blackcorrect, 0.0f, 9.0f,
                             code);
 
     if (code < 0)
@@ -986,7 +986,7 @@ send_scan_lines(gx_device_printer * pdev,
     word rmask =
         ~(word) 0 << ((-pdev->width * misc_vars->storage_bpp) & (W * 8 - 1));
 
-    lend = pdev->height - (dev_t_margin(pdev) + dev_b_margin(pdev)) * y_dpi;
+    lend = (int)(pdev->height - (dev_t_margin(pdev) + dev_b_margin(pdev)) * y_dpi);
 
     error_values->c = error_values->m = error_values->y = error_values->k = 0;
 
@@ -1298,8 +1298,8 @@ do_black_correction(float kvalue, int kcorrect[256])
   *col4 += ucr;  /* add removed black to black */\
   kadd  = ucr + *(kcorrect + ucr);\
   uca_fac = 1.0 + (kadd/255.0);\
-  *col1 *= uca_fac;\
-  *col2 *= uca_fac;\
+  *col1 = (byte)(*col1 * uca_fac);\
+  *col2 = (byte)(*col2 * uca_fac);\
 }
 
 /* do_gcr: Since resolution can be different on different planes, we need to
@@ -2000,12 +2000,12 @@ cdj970_start_raster_mode(gx_device_printer * pdev,
     init.a[25] = cdj970->intensities;   /* Intensity levels yellow */
 
     /* black plane resolution */
-    assign_dpi(cdj970->x_pixels_per_inch, init.a + 2);
-    assign_dpi(cdj970->y_pixels_per_inch, init.a + 4);
+    assign_dpi((int)cdj970->x_pixels_per_inch, init.a + 2);
+    assign_dpi((int)cdj970->y_pixels_per_inch, init.a + 4);
 
     /* color plane resolution */
-    xres = cdj970->x_pixels_per_inch / (cdj970->xscal + 1);
-    yres = cdj970->y_pixels_per_inch / (cdj970->yscal + 1);
+    xres = (int)(cdj970->x_pixels_per_inch / (cdj970->xscal + 1));
+    yres = (int)(cdj970->y_pixels_per_inch / (cdj970->yscal + 1));
 
     /* cyan */
     assign_dpi(xres, init.a + 8);
diff --git a/contrib/gdevgdi.c b/contrib/gdevgdi.c
index 60bd5c1..b22b147 100644
--- a/contrib/gdevgdi.c
+++ b/contrib/gdevgdi.c
@@ -71,8 +71,8 @@
 #define GDI_COMP_MODITIFF 6
 #define GDI_COMP_NOSEND   0x7f
 
-#define GDI_MARGINS_A4	        0.167, 0.167, 0.167, 0.167
-#define GDI_MARGINS_LETTER	0.167, 0.167, 0.167, 0.167
+#define GDI_MARGINS_A4	        0.167f, 0.167f, 0.167f, 0.167f
+#define GDI_MARGINS_LETTER	0.167f, 0.167f, 0.167f, 0.167f
 /*#define GDI_MARGINS_A4	0.0, 0.0, 0.0, 0.0*/
 /*#define GDI_MARGINS_LETTER	0.0, 0.0, 0.0, 0.0*/
 
diff --git a/contrib/gdevln03.c b/contrib/gdevln03.c
index 700afab..88cf8a1 100644
--- a/contrib/gdevln03.c
+++ b/contrib/gdevln03.c
@@ -239,7 +239,7 @@ gx_device_printer gs_sxlcrt_device =
                "sxlcrt",
                180,
                110,
-               42.6667, 32.0,
+               42.6667f, 32.0,
                0, 0, 0, 0,
                1, sxlcrt_print_page);
 
diff --git a/contrib/gdevlx32.c b/contrib/gdevlx32.c
index 5193cfe..0dd5d27 100644
--- a/contrib/gdevlx32.c
+++ b/contrib/gdevlx32.c
@@ -239,12 +239,12 @@ static void print_photo_page(pagedata *gendata);
  * it's quite hard to know, from inside a printer driver, if we are
  * printing on envelopes or on standard paper, so we just ignore that.
  */
-#define LXM3200_TOP_MARGIN           0.070
-#define LXM3200_BOTTOM_MARGIN        0.200
-#define LXM3200_A4_LEFT_MARGIN       0.135
-#define LXM3200_LETTER_LEFT_MARGIN   0.250
-#define LXM3200_A4_RIGHT_MARGIN      0.135
-#define LXM3200_LETTER_RIGHT_MARGIN  0.250
+#define LXM3200_TOP_MARGIN           0.070f
+#define LXM3200_BOTTOM_MARGIN        0.200f
+#define LXM3200_A4_LEFT_MARGIN       0.135f
+#define LXM3200_LETTER_LEFT_MARGIN   0.250f
+#define LXM3200_A4_RIGHT_MARGIN      0.135f
+#define LXM3200_LETTER_RIGHT_MARGIN  0.250f
 
 /* Offsets for the top and bootom start of the printing frame. */
 #define LXM3200_A4_TOPOFFSET       84
diff --git a/contrib/gdevmd2k.c b/contrib/gdevmd2k.c
index ed45e98..374ca0e 100644
--- a/contrib/gdevmd2k.c
+++ b/contrib/gdevmd2k.c
@@ -28,11 +28,11 @@
 #include <stdlib.h>
 #include <limits.h>
 
-#define MM_PER_INCH 25.4
-#define TOP_MARGIN    12. / MM_PER_INCH
-#define BOTTOM_MARGIN 15. / MM_PER_INCH
-#define LEFT_MARGIN   3.4 / MM_PER_INCH
-#define RIGHT_MARGIN  3.4 / MM_PER_INCH
+#define MM_PER_INCH 25.4f
+#define TOP_MARGIN    12.f / MM_PER_INCH
+#define BOTTOM_MARGIN 15.f / MM_PER_INCH
+#define LEFT_MARGIN   3.4f / MM_PER_INCH
+#define RIGHT_MARGIN  3.4f / MM_PER_INCH
 
 /* The device descriptor */
 static dev_proc_open_device(alps_open);
@@ -110,8 +110,8 @@ typedef enum {
 static int
 alps_open(gx_device *pdev)
 {
-    int xdpi = pdev->x_pixels_per_inch;
-    int ydpi = pdev->y_pixels_per_inch;
+    int xdpi = (int)pdev->x_pixels_per_inch;
+    int ydpi = (int)pdev->y_pixels_per_inch;
     const float margins[4] = {
         LEFT_MARGIN,
         BOTTOM_MARGIN,
@@ -129,10 +129,10 @@ alps_open(gx_device *pdev)
         return_error(gs_error_rangecheck);
 
     density = (xdpi == 300 ? 0.75 : xdpi == 600 ? 0.44 : 0.4);
-    dev_alps->cyan    *= density;
-    dev_alps->magenta *= density;
-    dev_alps->yellow  *= density;
-    dev_alps->black   *= density;
+    dev_alps->cyan    = (int)(dev_alps->cyan    * density);
+    dev_alps->magenta = (int)(dev_alps->magenta * density);
+    dev_alps->yellow  = (int)(dev_alps->yellow  * density);
+    dev_alps->black   = (int)(dev_alps->black   * density);
 
     return gdev_prn_open(pdev);
 }
@@ -449,8 +449,8 @@ alps_init(gx_device_printer *pdev, gp_file *prn_stream, alps_printer_type ptype)
             : pdev->x_pixels_per_inch == 600 ? 3 : 4), prn_stream);
     gp_fputc(0122, prn_stream);
 
-    height = (pdev->MediaSize[1] - pdev->HWMargins[1] - pdev->HWMargins[3])
-            * pdev->y_pixels_per_inch / 72.;
+    height = (short)((pdev->MediaSize[1] - pdev->HWMargins[1] - pdev->HWMargins[3])
+            * pdev->y_pixels_per_inch / 72.);
     alps_cmd("\033\046\154", height, 0120, prn_stream);
 
     /* if -dReverseSide ... */
diff --git a/contrib/gdevop4w.c b/contrib/gdevop4w.c
index 3109cc6..bfc6720 100644
--- a/contrib/gdevop4w.c
+++ b/contrib/gdevop4w.c
@@ -81,8 +81,8 @@
  * inexact paperlength which is set to 117 10ths.
  * Somebody should check for letter sized paper. I left it at 0.07".
  */
-#define OKI4W_MARGINS_LETTER	0.125, 0.25, 0.125, 0.07
-#define OKI4W_MARGINS_A4	0.125, 0.25, 0.125, 0.07
+#define OKI4W_MARGINS_LETTER	0.125f, 0.25f, 0.125f, 0.07f
+#define OKI4W_MARGINS_A4	0.125f, 0.25f, 0.125f, 0.07f
 
 /* We round up the LINE_SIZE to a multiple of a ulong for faster scanning. */
 #define word ulong
@@ -241,8 +241,8 @@ oki4w_print_page(gx_device_printer *pdev, gp_file *prn_stream)
 #define data ((byte *)data_words)
 #define out_row ((byte *)out_row_words)
         byte *out_data;
-        int x_dpi = pdev->x_pixels_per_inch;
-        int y_dpi = pdev->y_pixels_per_inch;
+        int x_dpi = (int)pdev->x_pixels_per_inch;
+        int y_dpi = (int)pdev->y_pixels_per_inch;
         int y_dots_per_pixel = x_dpi / y_dpi;
         int dpi_code, compress_code;
         int num_rows = dev_print_scan_lines(pdev);
diff --git a/contrib/japanese/gdev10v.c b/contrib/japanese/gdev10v.c
index dc670be..aa641de 100644
--- a/contrib/japanese/gdev10v.c
+++ b/contrib/japanese/gdev10v.c
@@ -209,8 +209,8 @@ bj10v_output_run(byte *data, int dnum, int bytes,
 static int
 bj10v_print_page(gx_device_printer *pdev, gp_file *prn_stream)
 {	int line_size = gdev_prn_raster((gx_device *)pdev);
-        int xres = pdev->x_pixels_per_inch;
-        int yres = pdev->y_pixels_per_inch;
+        int xres = (int)pdev->x_pixels_per_inch;
+        int yres = (int)pdev->y_pixels_per_inch;
         const char *mode = (yres == 180 ?
                       (xres == 180 ? "\052\047" : "\052\050") :
                       "|*");
diff --git a/contrib/japanese/gdevalps.c b/contrib/japanese/gdevalps.c
index 31e0fe4..9d3122a 100644
--- a/contrib/japanese/gdevalps.c
+++ b/contrib/japanese/gdevalps.c
@@ -43,9 +43,9 @@
 /* Alps Micro Dry 600dpi monochrome printer driver */
 #include "gdevprn.h"
 
-#define MD_TOP_MARGIN		0.47
-#define MD_BOTTOM_MARGIN	0.59
-#define MD_SIDE_MARGIN		0.13
+#define MD_TOP_MARGIN		0.47f
+#define MD_BOTTOM_MARGIN	0.59f
+#define MD_SIDE_MARGIN		0.13f
 
 #define X_DPI 600
 #define Y_DPI 600
diff --git a/contrib/japanese/gdevespg.c b/contrib/japanese/gdevespg.c
index 18ce6ca..2f18213 100644
--- a/contrib/japanese/gdevespg.c
+++ b/contrib/japanese/gdevespg.c
@@ -66,8 +66,8 @@ static const char *epson_remote_start = "\033\001@EJL \r\n";
 static int
 escpage_open(gx_device * pdev)
 {
-    int xdpi = pdev->x_pixels_per_inch;
-    int ydpi = pdev->y_pixels_per_inch;
+    int xdpi = (int)pdev->x_pixels_per_inch;
+    int ydpi = (int)pdev->y_pixels_per_inch;
 
     /* Resolution Check */
     if (xdpi != ydpi)
@@ -81,8 +81,8 @@ escpage_open(gx_device * pdev)
 static int
 lp2000_open(gx_device * pdev)
 {
-    int xdpi = pdev->x_pixels_per_inch;
-    int ydpi = pdev->y_pixels_per_inch;
+    int xdpi = (int)pdev->x_pixels_per_inch;
+    int ydpi = (int)pdev->y_pixels_per_inch;
 
     /* Resolution Check */
     if (xdpi != ydpi)
@@ -273,21 +273,21 @@ escpage_paper_set(gx_device_printer * pdev, gp_file * fp)
     int width, height, w, h, wp, hp, bLandscape;
     EpagPaperTable *pt;
 
-    width = pdev->MediaSize[0];
-    height = pdev->MediaSize[1];
+    width = (int)pdev->MediaSize[0];
+    height = (int)pdev->MediaSize[1];
 
     if (width < height) {
         bLandscape = 0;
         w = width;
         h = height;
-        wp = width / 72.0 * pdev->x_pixels_per_inch;
-        hp = height / 72.0 * pdev->y_pixels_per_inch;
+        wp = (int)(width / 72.0 * pdev->x_pixels_per_inch);
+        hp = (int)(height / 72.0 * pdev->y_pixels_per_inch);
     } else {
         bLandscape = 1;
         w = height;
         h = width;
-        wp = height / 72.0 * pdev->y_pixels_per_inch;
-        hp = width / 72.0 * pdev->x_pixels_per_inch;
+        wp = (int)(height / 72.0 * pdev->y_pixels_per_inch);
+        hp = (int)(width / 72.0 * pdev->x_pixels_per_inch);
     }
 
     for (pt = epagPaperTable; pt->escpage > 0; pt++)
diff --git a/contrib/japanese/gdevmjc.c b/contrib/japanese/gdevmjc.c
index a181304..6e8f2bd 100644
--- a/contrib/japanese/gdevmjc.c
+++ b/contrib/japanese/gdevmjc.c
@@ -113,9 +113,9 @@ copies.  */
 
 /* Margins are left, bottom, right, top. */
 /* left bottom right top */
-#define MJ700V2C_MARGINS_A4      0.118, 0.52, 0.118, 0.33465
-#define MJ6000C_MARGINS_A2      0.948, 0.52, 1.969, 0.33465
-#define MJ8000C_MARGINS_A2      0.194, 0.52, 0.194, 0.33465
+#define MJ700V2C_MARGINS_A4     0.118f, 0.52f, 0.118f, 0.33465f
+#define MJ6000C_MARGINS_A2      0.948f, 0.52f, 1.969f, 0.33465f
+#define MJ8000C_MARGINS_A2      0.194f, 0.52f, 0.194f, 0.33465f
 
 /* Define bits-per-pixel for generic drivers - default is 24-bit mode */
 #ifndef BITSPERPIXEL
@@ -296,8 +296,8 @@ mjcmyk_device(mj8000c_procs, "mj8000c", 360, 360, BITSPERPIXEL,
 static int
 gdev_mjc_paper_size(gx_device *dev)
 {
-  int width = dev->MediaSize[0];
-  int height = dev->MediaSize[1];
+  int width = (int)dev->MediaSize[0];
+  int height = (int)dev->MediaSize[1];
 
   if (width == 1190 && height == 1684)
     return PAPER_SIZE_A2;
@@ -333,8 +333,8 @@ mj8000c_open(gx_device * pdev)
 static int
 mj_open(gx_device *pdev, int ptype)
 {       /* Change the margins if necessary. */
-  int xdpi = pdev->x_pixels_per_inch;
-  int ydpi = pdev->y_pixels_per_inch;
+  int xdpi = (int)pdev->x_pixels_per_inch;
+  int ydpi = (int)pdev->y_pixels_per_inch;
 
   static const float mj_margin[4] = { MJ700V2C_MARGINS_A4 };
   static const float mj6000c_a2[4] = { MJ6000C_MARGINS_A2 };
@@ -365,7 +365,7 @@ mj_open(gx_device *pdev, int ptype)
   gx_device_set_margins(pdev, m, true);
 
   if (mj->colorcomp == 3)
-    mj->density = mj->density * 720 / ydpi * 1.5;
+    mj->density = (int)(mj->density * 720 / ydpi * 1.5);
   else
     mj->density = mj->density * 720 / ydpi;
 
@@ -1175,7 +1175,7 @@ mj_print_page(gx_device_printer * pdev, gp_file * prn_stream, int ptype)
 
   {
     int MJ_MARGIN_MM = 55;
-    uint top_skip = ( MJ_MARGIN_MM  * pdev->y_pixels_per_inch ) / 254;
+    uint top_skip = (int)(( MJ_MARGIN_MM  * pdev->y_pixels_per_inch ) / 254);
     top_skip = (top_skip ^ (-1)) & 65536;
     gp_fwrite("\033(V\2\0\0\0",sizeof(byte), 7, prn_stream);
     gp_fwrite("\033(v\2\0\0\xff",sizeof(byte), 7, prn_stream);
@@ -1183,8 +1183,8 @@ mj_print_page(gx_device_printer * pdev, gp_file * prn_stream, int ptype)
 
   /* Send each scan line in turn */
   {
-    long int lend = pdev->height -
-      (dev_t_margin_points(pdev) + dev_b_margin_points(pdev));
+    long int lend = (int)(pdev->height -
+      (dev_t_margin_points(pdev) + dev_b_margin_points(pdev)));
     int cErr, mErr, yErr, kErr;
     int this_pass, i;
     long int lnum;
diff --git a/contrib/japanese/gdevnpdl.c b/contrib/japanese/gdevnpdl.c
index 4ecace5..9deadae 100644
--- a/contrib/japanese/gdevnpdl.c
+++ b/contrib/japanese/gdevnpdl.c
@@ -71,45 +71,45 @@
  * The commented values are from the PC-PR1000E/4 User's Manual.
  */
 /* margins of A3 paper */
-#define L_MARGIN_A3 0.20
-#define B_MARGIN_A3 0.24
-#define R_MARGIN_A3 0.20
-#define T_MARGIN_A3 0.20
+#define L_MARGIN_A3 0.20f
+#define B_MARGIN_A3 0.24f
+#define R_MARGIN_A3 0.20f
+#define T_MARGIN_A3 0.20f
 /* margins of A4 paper */
-#define L_MARGIN_A4 0.31
-#define B_MARGIN_A4 0.20
-#define R_MARGIN_A4 0.16
-#define T_MARGIN_A4 0.20
+#define L_MARGIN_A4 0.31f
+#define B_MARGIN_A4 0.20f
+#define R_MARGIN_A4 0.16f
+#define T_MARGIN_A4 0.20f
 /* margins of A5 paper */
-#define L_MARGIN_A5 0.31
-#define B_MARGIN_A5 0.16
-#define R_MARGIN_A5 0.16
-#define T_MARGIN_A5 0.20
+#define L_MARGIN_A5 0.31f
+#define B_MARGIN_A5 0.16f
+#define R_MARGIN_A5 0.16f
+#define T_MARGIN_A5 0.20f
 /* margins of B4 paper */
-#define L_MARGIN_B4 0.31
-#define B_MARGIN_B4 0.24
-#define R_MARGIN_B4 0.31
-#define T_MARGIN_B4 0.20
+#define L_MARGIN_B4 0.31f
+#define B_MARGIN_B4 0.24f
+#define R_MARGIN_B4 0.31f
+#define T_MARGIN_B4 0.20f
 /* margins of B5 paper */
-#define L_MARGIN_B5 0.31
-#define B_MARGIN_B5 0.24
-#define R_MARGIN_B5 0.16
-#define T_MARGIN_B5 0.20
+#define L_MARGIN_B5 0.31f
+#define B_MARGIN_B5 0.24f
+#define R_MARGIN_B5 0.16f
+#define T_MARGIN_B5 0.20f
 /* margins of letter size paper */
-#define L_MARGIN_LETTER 0.31
-#define B_MARGIN_LETTER 0.24
-#define R_MARGIN_LETTER 0.20
-#define T_MARGIN_LETTER 0.20
+#define L_MARGIN_LETTER 0.31f
+#define B_MARGIN_LETTER 0.24f
+#define R_MARGIN_LETTER 0.20f
+#define T_MARGIN_LETTER 0.20f
 /* margins of postcard size paper */
-#define L_MARGIN_POSTCARD 0.31
-#define B_MARGIN_POSTCARD 0.12
-#define R_MARGIN_POSTCARD 0.24
-#define T_MARGIN_POSTCARD 0.20
+#define L_MARGIN_POSTCARD 0.31f
+#define B_MARGIN_POSTCARD 0.12f
+#define R_MARGIN_POSTCARD 0.24f
+#define T_MARGIN_POSTCARD 0.20f
 /* margins of env4 size paper */
-#define L_MARGIN_ENV4 0.20
-#define B_MARGIN_ENV4 0.20
-#define R_MARGIN_ENV4 0.20
-#define T_MARGIN_ENV4 0.20
+#define L_MARGIN_ENV4 0.20f
+#define B_MARGIN_ENV4 0.20f
+#define R_MARGIN_ENV4 0.20f
+#define T_MARGIN_ENV4 0.20f
 
 /* The device descriptors */
 static dev_proc_open_device(npdl_open);
@@ -527,8 +527,8 @@ npdl_set_page_layout(gx_device * dev)
 static int
 npdl_open(gx_device * dev)
 {
-    int xdpi = dev->x_pixels_per_inch;
-    int ydpi = dev->y_pixels_per_inch;
+    int xdpi = (int)dev->x_pixels_per_inch;
+    int ydpi = (int)dev->y_pixels_per_inch;
 
     /* Print Resolution Check */
     if (xdpi != ydpi)
diff --git a/contrib/japanese/gdevrpdl.c b/contrib/japanese/gdevrpdl.c
index dee81bb..d7e561f 100644
--- a/contrib/japanese/gdevrpdl.c
+++ b/contrib/japanese/gdevrpdl.c
@@ -48,8 +48,8 @@ lprn_device(gx_device_lprn, rpdl_prn_procs, "rpdl",
 static int
 rpdl_open(gx_device * pdev)
 {
-    int xdpi = pdev->x_pixels_per_inch;
-    int ydpi = pdev->y_pixels_per_inch;
+    int xdpi = (int)pdev->x_pixels_per_inch;
+    int ydpi = (int)pdev->y_pixels_per_inch;
 
     /* Resolution Check */
     if (xdpi != ydpi)
@@ -238,8 +238,8 @@ rpdl_paper_set(gx_device_printer * pdev, gp_file * prn_stream)
     /* Page size match tolerance in points */
     #define TOL 5
 
-    width = pdev->MediaSize[0];
-    height = pdev->MediaSize[1];
+    width = (int)pdev->MediaSize[0];
+    height = (int)pdev->MediaSize[1];
 
     if (width < height) {
         w = width;
diff --git a/contrib/lips4/gdevl4r.c b/contrib/lips4/gdevl4r.c
index 9272a6b..9af084f 100644
--- a/contrib/lips4/gdevl4r.c
+++ b/contrib/lips4/gdevl4r.c
@@ -56,9 +56,9 @@ static dev_proc_image_out(lips4_image_out);
           (int)((long)(DEFAULT_WIDTH_10THS) * (xdpi) / 10),\
           (int)((long)(DEFAULT_HEIGHT_10THS) * (ydpi) / 10),\
           xdpi, ydpi, color_bits,\
-          -(lm) * (xdpi), -(tm) * (ydpi),\
-          (lm) * 72.0, (bm) * 72.0,\
-          (rm) * 72.0, (tm) * 72.0\
+          (float)(-(lm) * (xdpi)), (float)(-(tm) * (ydpi)),\
+          (float)((lm) * 72.0), (float)((bm) * 72.0f),\
+          (float)((rm) * 72.0), (float)((tm) * 72.0f)\
         ),\
        lp_device_body_rest_(print_page_copies, image_out),\
            cassetFeed, username, LIPS_PJL_DEFAULT,\
@@ -71,9 +71,9 @@ static dev_proc_image_out(lips4_image_out);
           (int)((long)(DEFAULT_WIDTH_10THS) * (xdpi) / 10),\
           (int)((long)(DEFAULT_HEIGHT_10THS) * (ydpi) / 10),\
           xdpi, ydpi, color_bits,\
-          -(lm) * (xdpi), -(tm) * (ydpi),\
-          (lm) * 72.0, (bm) * 72.0,\
-          (rm) * 72.0, (tm) * 72.0\
+          (float)(-(lm) * (xdpi)), (float)(-(tm) * (ydpi)),\
+          (float)((lm) * 72.0), (float)((bm) * 72.0),\
+          (float)((rm) * 72.0), (float)((tm) * 72.0)\
         ),\
        lp_duplex_device_body_rest_(print_page_copies, image_out),\
   cassetFeed,\
@@ -214,10 +214,10 @@ lips4_open(gx_device * pdev)
 static int
 lips_open(gx_device * pdev, lips_printer_type ptype)
 {
-    int width = pdev->MediaSize[0];
-    int height = pdev->MediaSize[1];
-    int xdpi = pdev->x_pixels_per_inch;
-    int ydpi = pdev->y_pixels_per_inch;
+    int width = (int)pdev->MediaSize[0];
+    int height = (int)pdev->MediaSize[1];
+    int xdpi = (int)pdev->x_pixels_per_inch;
+    int ydpi = (int)pdev->y_pixels_per_inch;
 
     /* Paper Size Check */
     if (width <= height) {	/* portrait */
@@ -649,8 +649,8 @@ lips4type_print_page_copies(gx_device_printer * pdev, gp_file * prn_stream, int
           return_error(gs_error_VMerror);
 
         if (lprn->NegativePrint) {
-          int rm = pdev->width - (dev_l_margin(pdev) + dev_r_margin(pdev)) * pdev->x_pixels_per_inch;
-          int bm = pdev->height - (dev_t_margin(pdev) + dev_b_margin(pdev)) * pdev->y_pixels_per_inch;
+          int rm = (int)(pdev->width - (dev_l_margin(pdev) + dev_r_margin(pdev)) * pdev->x_pixels_per_inch);
+          int bm = (int)(pdev->height - (dev_t_margin(pdev) + dev_b_margin(pdev)) * pdev->y_pixels_per_inch);
           /* Draw black rectangle */
           gp_fprintf(prn_stream,
                      "%c{%c%da%c%de%c;;;3}",
@@ -941,8 +941,8 @@ lips_job_start(gx_device_printer * pdev, lips_printer_type ptype, gp_file * prn_
     gx_device_lips *const lips = (gx_device_lips *) pdev;
     gx_device_lips4 *const lips4 = (gx_device_lips4 *) pdev;
     int prev_paper_size, prev_paper_width, prev_paper_height, paper_size;
-    int width = pdev->MediaSize[0];
-    int height = pdev->MediaSize[1];
+    int width = (int)pdev->MediaSize[0];
+    int height = (int)pdev->MediaSize[1];
     int tm, lm, rm, bm;
 
     if (pdev->PageCount == 0) {
@@ -1168,14 +1168,14 @@ lips_job_start(gx_device_printer * pdev, lips_printer_type ptype, gp_file * prn_
     }
     if (prev_paper_size != paper_size) {
         /* Top Margin: 63/300 inch + 5 mm */
-        tm = (63. / 300. + 5. / MMETER_PER_INCH - dev_t_margin(pdev)) * pdev->x_pixels_per_inch;
+        tm = (int)((63. / 300. + 5. / MMETER_PER_INCH - dev_t_margin(pdev)) * pdev->x_pixels_per_inch);
         if (tm > 0)
             gp_fprintf(prn_stream, "%c%dk", LIPS_CSI, tm);
         if (tm < 0)
             gp_fprintf(prn_stream, "%c%de", LIPS_CSI, -tm);
 
         /* Left Margin: 5 mm left */
-        lm = (5. / MMETER_PER_INCH - dev_l_margin(pdev)) * pdev->x_pixels_per_inch;
+        lm = (int)((5. / MMETER_PER_INCH - dev_l_margin(pdev)) * pdev->x_pixels_per_inch);
         if (lm > 0)
             gp_fprintf(prn_stream, "%c%dj", LIPS_CSI, lm);
         if (lm < 0)
@@ -1185,10 +1185,10 @@ lips_job_start(gx_device_printer * pdev, lips_printer_type ptype, gp_file * prn_
         gp_fprintf(prn_stream, "%c0;2t", LIPS_CSI);
 
         /* Bottom Margin: height */
-        bm = pdev->height - (dev_t_margin(pdev) + dev_b_margin(pdev)) * pdev->y_pixels_per_inch;
+        bm = (int)(pdev->height - (dev_t_margin(pdev) + dev_b_margin(pdev)) * pdev->y_pixels_per_inch);
         gp_fprintf(prn_stream, "%c%de", LIPS_CSI, bm);
         /* Right Margin: width */
-        rm = pdev->width - (dev_l_margin(pdev) + dev_r_margin(pdev)) * pdev->x_pixels_per_inch;
+        rm = (int)(pdev->width - (dev_l_margin(pdev) + dev_r_margin(pdev)) * pdev->x_pixels_per_inch);
         gp_fprintf(prn_stream, "%c%da", LIPS_CSI, rm);
         gp_fprintf(prn_stream, "%c1;3t", LIPS_CSI);
 
diff --git a/contrib/lips4/gdevlips.h b/contrib/lips4/gdevlips.h
index 0083d70..1e3dd72 100644
--- a/contrib/lips4/gdevlips.h
+++ b/contrib/lips4/gdevlips.h
@@ -114,29 +114,29 @@
 #define LIPS4_COMPRESS_DEFAULT FALSE
 
 #define	LIPS2P_DPI_DEFAULT 240
-#define	LIPS2P_LEFT_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	LIPS2P_BOTTOM_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	LIPS2P_RIGHT_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	LIPS2P_TOP_MARGIN_DEFAULT 5. / MMETER_PER_INCH
+#define	LIPS2P_LEFT_MARGIN_DEFAULT    (float)(5. / MMETER_PER_INCH)
+#define	LIPS2P_BOTTOM_MARGIN_DEFAULT  (float)(5. / MMETER_PER_INCH)
+#define	LIPS2P_RIGHT_MARGIN_DEFAULT   (float)(5. / MMETER_PER_INCH)
+#define	LIPS2P_TOP_MARGIN_DEFAULT     (float)(5. / MMETER_PER_INCH)
 
 #define	LIPS3_DPI_DEFAULT 300
-#define	LIPS3_LEFT_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	LIPS3_BOTTOM_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	LIPS3_RIGHT_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	LIPS3_TOP_MARGIN_DEFAULT 5. / MMETER_PER_INCH
+#define	LIPS3_LEFT_MARGIN_DEFAULT     (float)(5. / MMETER_PER_INCH)
+#define	LIPS3_BOTTOM_MARGIN_DEFAULT   (float)(5. / MMETER_PER_INCH)
+#define	LIPS3_RIGHT_MARGIN_DEFAULT    (float)(5. / MMETER_PER_INCH)
+#define	LIPS3_TOP_MARGIN_DEFAULT      (float)(5. / MMETER_PER_INCH)
 
 #define	BJC880J_DPI_DEFAULT 360
-#define	BJC880J_LEFT_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	BJC880J_BOTTOM_MARGIN_DEFAULT 8. / MMETER_PER_INCH
-#define	BJC880J_RIGHT_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	BJC880J_TOP_MARGIN_DEFAULT 2. / MMETER_PER_INCH
+#define	BJC880J_LEFT_MARGIN_DEFAULT   (float)(5. / MMETER_PER_INCH)
+#define	BJC880J_BOTTOM_MARGIN_DEFAULT (float)(8. / MMETER_PER_INCH)
+#define	BJC880J_RIGHT_MARGIN_DEFAULT  (float)(5. / MMETER_PER_INCH)
+#define	BJC880J_TOP_MARGIN_DEFAULT    (float)(2. / MMETER_PER_INCH)
 
 #define	LIPS4_DPI_DEFAULT 600
 
-#define	LIPS4_LEFT_MARGIN_DEFAULT  5. / MMETER_PER_INCH
-#define	LIPS4_BOTTOM_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	LIPS4_RIGHT_MARGIN_DEFAULT 5. / MMETER_PER_INCH
-#define	LIPS4_TOP_MARGIN_DEFAULT 5. / MMETER_PER_INCH
+#define	LIPS4_LEFT_MARGIN_DEFAULT     (float)(5. / MMETER_PER_INCH)
+#define	LIPS4_BOTTOM_MARGIN_DEFAULT   (float)(5. / MMETER_PER_INCH)
+#define	LIPS4_RIGHT_MARGIN_DEFAULT    (float)(5. / MMETER_PER_INCH)
+#define	LIPS4_TOP_MARGIN_DEFAULT      (float)(5. / MMETER_PER_INCH)
 
 /* Define the default resolutions. */
 
diff --git a/contrib/pcl3/eprn/mediasize.c b/contrib/pcl3/eprn/mediasize.c
index 8cfe3d9..21c6a26 100644
--- a/contrib/pcl3/eprn/mediasize.c
+++ b/contrib/pcl3/eprn/mediasize.c
@@ -100,11 +100,11 @@ static const ms_SizeDescription list[] = {
     /* Media called by this name may vary up to 0.5" in dimension (PPD 4.3). */
   {sn(A4),		{210*BP_PER_MM,	297*BP_PER_MM}},
   {sn(Folio),		{210*BP_PER_MM, 330*BP_PER_MM}},
-  {sn(Quarto),		{8.5*BP_PER_IN,	10.83*BP_PER_IN}},  /* 215.9 x 275.1 mm
+  {sn(Quarto),		{8.5f*BP_PER_IN,	10.83f*BP_PER_IN}},  /* 215.9 x 275.1 mm
         PPD 4.3 uses bp values for the definition, but this does not agree
         with the mm values it specifies. The inch specifications fit. */
-  {sn(Letter),		{8.5*BP_PER_IN,	11.0*BP_PER_IN}}, /* 215.9 x 279.4 mm */
-  {sn(Legal),		{8.5*BP_PER_IN,	14.0*BP_PER_IN}}, /* 215.9 x 355.6 mm */
+  {sn(Letter),		{8.5f*BP_PER_IN,	11.0f*BP_PER_IN}}, /* 215.9 x 279.4 mm */
+  {sn(Legal),		{8.5f*BP_PER_IN,	14.0f*BP_PER_IN}}, /* 215.9 x 355.6 mm */
   {sn(EnvKaku3),	{216*BP_PER_MM,	277*BP_PER_MM}},
   {sn(SuperA),		{227*BP_PER_MM,	356*BP_PER_MM}},
   {sn(ARCHA),		{9*BP_PER_IN,	12*BP_PER_IN}},	  /* 228.6 x 304.8 mm */
diff --git a/contrib/pcl3/eprn/mediasize.h b/contrib/pcl3/eprn/mediasize.h
index 8553b6e..4033ad2 100644
--- a/contrib/pcl3/eprn/mediasize.h
+++ b/contrib/pcl3/eprn/mediasize.h
@@ -20,10 +20,10 @@
    All these macros resolve to floating point numbers. */
 
 /* Millimetres per inch */
-#define MM_PER_IN	25.4
+#define MM_PER_IN	25.4f
 
 /* Big points (units in PostScript's default user space) per inch */
-#define BP_PER_IN	72.0
+#define BP_PER_IN	72.0f
 
 /* Big points per millimetre */
 #define BP_PER_MM	(BP_PER_IN/MM_PER_IN)
diff --git a/contrib/pcl3/src/gdevpcl3.c b/contrib/pcl3/src/gdevpcl3.c
index 7582c9b..4a63788 100644
--- a/contrib/pcl3/src/gdevpcl3.c
+++ b/contrib/pcl3/src/gdevpcl3.c
@@ -1378,8 +1378,8 @@ static int pcl3_open_device(gx_device *device)
 
     /* Per-colorant information */
     for (j = 0; j < data->number_of_colorants; j++) {
-      data->colorant_array[j].hres = dev->HWResolution[0] + 0.5;
-      data->colorant_array[j].vres = dev->HWResolution[1] + 0.5;
+      data->colorant_array[j].hres = (int)(dev->HWResolution[0] + 0.5);
+      data->colorant_array[j].vres = (int)(dev->HWResolution[1] + 0.5);
     }
     if (data->palette == pcl_CMY || data->palette == pcl_RGB)
       for (j = 0; j < 3; j++)
diff --git a/contrib/pcl3/src/pclcap.c b/contrib/pcl3/src/pclcap.c
index f07b93a..77f52aa 100644
--- a/contrib/pcl3/src/pclcap.c
+++ b/contrib/pcl3/src/pclcap.c
@@ -110,15 +110,15 @@ static const eprn_PageDescription
         Note that BPD05054 gives different margins.
     */
     {ms_Letter,
-      0.25*BP_PER_IN, (0.5-0.08)*BP_PER_IN, 0.25*BP_PER_IN, 0.08*BP_PER_IN},
+      0.25f*BP_PER_IN, (0.5f-0.08f)*BP_PER_IN, 0.25f*BP_PER_IN, 0.08f*BP_PER_IN},
     {ms_Legal,
-      0.25*BP_PER_IN, (0.5-0.08)*BP_PER_IN, 0.25*BP_PER_IN, 0.08*BP_PER_IN},
+      0.25f*BP_PER_IN, (0.5f-0.08f)*BP_PER_IN, 0.25f*BP_PER_IN, 0.08f*BP_PER_IN},
     {ms_A4,
-      0.125*BP_PER_IN, (0.5-0.08)*BP_PER_IN, 3.6*BP_PER_MM, 0.08*BP_PER_IN},
+      0.125f*BP_PER_IN, (0.5f-0.08f)*BP_PER_IN, 3.6f*BP_PER_MM, 0.08f*BP_PER_IN},
     {ms_Executive,
-      0.25*BP_PER_IN, (0.5-0.08)*BP_PER_IN, 0.25*BP_PER_IN, 0.08*BP_PER_IN},
+      0.25f*BP_PER_IN, (0.5f-0.08f)*BP_PER_IN, 0.25f*BP_PER_IN, 0.08f*BP_PER_IN},
     {ms_JISB5,
-      3.175*BP_PER_MM, (0.5-0.08)*BP_PER_IN, 3.25*BP_PER_MM, 0.08*BP_PER_IN},
+      3.175f*BP_PER_MM, (0.5f-0.08f)*BP_PER_IN, 3.25f*BP_PER_MM, 0.08f*BP_PER_IN},
     /*  DJ3/4 p. 21: "Envelopes are printed in the landscape mode". As the
         margins are given such that the largest value is designated as "bottom"
         and the bottom is designated on page 19 as a long edge, I conclude that
@@ -126,9 +126,9 @@ static const eprn_PageDescription
         dimensions for Env10 in portrait and EnvDL in landscape orientation.
      */
     {ms_Env10 | MS_TRANSVERSE_FLAG,
-      0.125*BP_PER_IN, (0.5-0.08)*BP_PER_IN, 0.08*BP_PER_IN, 0.08*BP_PER_IN},
+      0.125f*BP_PER_IN, (0.5f-0.08f)*BP_PER_IN, 0.08f*BP_PER_IN, 0.08f*BP_PER_IN},
     {ms_EnvDL | MS_TRANSVERSE_FLAG,
-      0.125*BP_PER_IN, (0.5-0.08)*BP_PER_IN, 0.11*BP_PER_IN, 0.08*BP_PER_IN},
+      0.125f*BP_PER_IN, (0.5f-0.08f)*BP_PER_IN, 0.11f*BP_PER_IN, 0.08f*BP_PER_IN},
     {ms_none}
   },
   hpdj500_sizes[] = {
@@ -139,13 +139,13 @@ static const eprn_PageDescription
         well.
         Order of margins: left, bottom, right, top. */
     {ms_Letter,
-      0.25*BP_PER_IN, 0.57*BP_PER_IN, 0.25*BP_PER_IN, 0.1*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.57f*BP_PER_IN, 0.25f*BP_PER_IN, 0.1f*BP_PER_IN},
     {ms_Legal,
-      0.25*BP_PER_IN, 0.57*BP_PER_IN, 0.25*BP_PER_IN, 0.1*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.57f*BP_PER_IN, 0.25f*BP_PER_IN, 0.1f*BP_PER_IN},
     {ms_A4,
-      3.1*BP_PER_MM, 0.57*BP_PER_IN, 3.6*BP_PER_MM, 0.1*BP_PER_IN},
+      3.1f*BP_PER_MM, 0.57f*BP_PER_IN, 3.6f*BP_PER_MM, 0.1f*BP_PER_IN},
     {ms_Env10 | MS_TRANSVERSE_FLAG, /* Margins from BPD05054 */
-      0.75*BP_PER_IN, 0.57*BP_PER_IN, 0.75*BP_PER_IN, 0.1*BP_PER_IN},
+      0.75f*BP_PER_IN, 0.57f*BP_PER_IN, 0.75f*BP_PER_IN, 0.1f*BP_PER_IN},
     {ms_none}
   },
   hpdj500c_sizes[] = {
@@ -156,16 +156,16 @@ static const eprn_PageDescription
         0.17 inches more at the bottom.
         Order of margins: left, bottom, right, top. */
     {ms_Letter,
-      0.25*BP_PER_IN, 0.4*BP_PER_IN, 0.25*BP_PER_IN, 0.1*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.4f*BP_PER_IN, 0.25f*BP_PER_IN, 0.1f*BP_PER_IN},
     {ms_Legal,
-      0.25*BP_PER_IN, 0.4*BP_PER_IN, 0.25*BP_PER_IN, 0.1*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.4f*BP_PER_IN, 0.25f*BP_PER_IN, 0.1f*BP_PER_IN},
     {ms_A4,
-      3.1*BP_PER_MM, 0.4*BP_PER_IN, 3.6*BP_PER_MM, 0.1*BP_PER_IN},
+      3.1f*BP_PER_MM, 0.4f*BP_PER_IN, 3.6f*BP_PER_MM, 0.1f*BP_PER_IN},
     {ms_Env10 | MS_TRANSVERSE_FLAG,
        /* Margins from BPD05054, but I've chosen 0.4 in for the bottom margin
           instead of 0.57 in as listed there because it looks to me like the
           colour bottom. Compare with the DJ 500. */
-      0.75*BP_PER_IN, 0.4*BP_PER_IN, 0.75*BP_PER_IN, 0.1*BP_PER_IN},
+      0.75f*BP_PER_IN, 0.4f*BP_PER_IN, 0.75f*BP_PER_IN, 0.1f*BP_PER_IN},
     {ms_none}
   },
   common_sizes[] = { /* DJs 510, 520, 550C und 560C for printing in black */
@@ -175,19 +175,19 @@ static const eprn_PageDescription
         For colour, the bottom margin must be increased by 0.13 inches.
         Order of margins: left, bottom, right, top. */
     {ms_Letter,
-      0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Legal,
-      0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Executive,
-      0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.20*BP_PER_IN, 0.04*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.20f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_A4,
-      3.1*BP_PER_MM, 0.46*BP_PER_IN, 3.6*BP_PER_MM, 0.04*BP_PER_IN},
+      3.1f*BP_PER_MM, 0.46f*BP_PER_IN, 3.6f*BP_PER_MM, 0.04f*BP_PER_IN},
     /* Envelopes are supported according the TRG500, the margins are from
        BPD05054. */
     {ms_Env10,	/* given in landscape by HP */
-      0.123*BP_PER_IN, 0.71*BP_PER_IN, 0.125*BP_PER_IN, 0.04*BP_PER_IN},
+      0.123f*BP_PER_IN, 0.71f*BP_PER_IN, 0.125f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_EnvDL,	/* given in landscape by HP */
-      3.1*BP_PER_MM, 18.0*BP_PER_MM, 3.6*BP_PER_MM, 1.0*BP_PER_MM},
+      3.1f*BP_PER_MM, 18.0f*BP_PER_MM, 3.6f*BP_PER_MM, 1.0f*BP_PER_MM},
     {ms_none}
   },
   hpdj540_sizes[] = {
@@ -197,25 +197,25 @@ static const eprn_PageDescription
         colour, the resulting data agree with those in the DG, pp. 65-66.
         Order of margins: left, bottom, right, top. */
     {ms_Executive,
-      0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_Letter,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_Legal,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_A4,	3.2*BP_PER_MM, 11.7*BP_PER_MM, 3.2*BP_PER_MM, 0.04*BP_PER_IN},
-    {ms_A5,	3.2*BP_PER_MM, 18.0*BP_PER_MM, 3.2*BP_PER_MM, 0.04*BP_PER_IN},
-    {ms_JISB5,	4.2*BP_PER_MM, 11.7*BP_PER_MM, 4.2*BP_PER_MM, 0.04*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_Letter,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_Legal,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_A4,	3.2f*BP_PER_MM, 11.7f*BP_PER_MM, 3.2f*BP_PER_MM, 0.04f*BP_PER_IN},
+    {ms_A5,	3.2f*BP_PER_MM, 18.0f*BP_PER_MM, 3.2f*BP_PER_MM, 0.04f*BP_PER_IN},
+    {ms_JISB5,	4.2f*BP_PER_MM, 11.7f*BP_PER_MM, 4.2f*BP_PER_MM, 0.04f*BP_PER_IN},
     {ms_Index4x6in,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Index5x8in,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_A6 | PCL_CARD_FLAG,
-      3.2*BP_PER_MM, 18.0*BP_PER_MM, 3.2*BP_PER_MM, 0.04*BP_PER_IN},
-    {ms_Env10,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      3.2f*BP_PER_MM, 18.0f*BP_PER_MM, 3.2f*BP_PER_MM, 0.04f*BP_PER_IN},
+    {ms_Env10,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
       /* given in landscape by HP */
-    {ms_EnvDL,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+    {ms_EnvDL,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
       /* given in landscape by HP */
-    {ms_EnvC6,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+    {ms_EnvC6,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
       /* given in landscape by HP */
-    {ms_Postcard, 4.2*BP_PER_MM, 18.0*BP_PER_MM, 4.2*BP_PER_MM, 0.04*BP_PER_IN},
+    {ms_Postcard, 4.2f*BP_PER_MM, 18.0f*BP_PER_MM, 4.2f*BP_PER_MM, 0.04f*BP_PER_IN},
     {ms_none}
   },
   hpdj660c_sizes[] = {
@@ -228,34 +228,34 @@ static const eprn_PageDescription
         contradiction with DG because BPD02519 gives different values for
         printing from Windows.
     */
-    {ms_Letter,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_Legal,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
+    {ms_Letter,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_Legal,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Executive,
-      0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_A4,	0.13*BP_PER_IN, 0.46*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_A5,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_JISB5,	0.17*BP_PER_IN, 0.46*BP_PER_IN, 0.17*BP_PER_IN, 0.04*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_A4,	0.13f*BP_PER_IN, 0.46f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_A5,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_JISB5,	0.17f*BP_PER_IN, 0.46f*BP_PER_IN, 0.17f*BP_PER_IN, 0.04f*BP_PER_IN},
      /* The bottom margin for JISB5 is given with large differences. BPD02519
         specifies it as 0.46 in for black from DOS, 0.59 in DOS/colour (agreeing
         with +0.13 in for 'bottom_increment') and the same for Windows black or
         colour. BPD05054 gives 0.84 in without distinguishing between black and
         colour, and the DG gives 0.59 in. */
-    {ms_Env10,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+    {ms_Env10,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
       /* given in landscape by HP */
-    {ms_EnvDL,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+    {ms_EnvDL,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
       /* given in landscape by HP */
-    {ms_EnvC6,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+    {ms_EnvC6,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
       /* given in landscape by HP */
     {ms_Index4x6in,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Index5x8in,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_A6 | PCL_CARD_FLAG,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Postcard,
-      0.17*BP_PER_IN, 0.71*BP_PER_IN, 0.17*BP_PER_IN, 0.04*BP_PER_IN},
+      0.17f*BP_PER_IN, 0.71f*BP_PER_IN, 0.17f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_EnvUS_A2,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
        /* Supported (BPD02925, BPD05054, DG), margins from BPD05054 agreeing
           with DG p. 70 */
     {ms_none}
@@ -276,30 +276,30 @@ static const eprn_PageDescription
       (0.83 in vs. 0.59 in).
       The DJ 690C does support banner printing (DJ6/8 p. 9).
     */
-    {ms_Letter,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_A4,	0.13*BP_PER_IN, 0.46*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_Legal,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_Env10,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+    {ms_Letter,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_A4,	0.13f*BP_PER_IN, 0.46f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_Legal,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_Env10,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Executive,
-      0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_EnvDL,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_A5,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_JISB5,	0.17*BP_PER_IN, 0.46*BP_PER_IN, 0.17*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_EnvC6,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_EnvDL,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_A5,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_JISB5,	0.17f*BP_PER_IN, 0.46f*BP_PER_IN, 0.17f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_EnvC6,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Index4x6in,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Index5x8in,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_A6 | PCL_CARD_FLAG,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Postcard,
-      0.17*BP_PER_IN, 0.71*BP_PER_IN, 0.17*BP_PER_IN, 0.04*BP_PER_IN},
+      0.17f*BP_PER_IN, 0.71f*BP_PER_IN, 0.17f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_EnvUS_A2,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Letter | MS_BIG_FLAG,	/* banner */
-      0.25*BP_PER_IN, 0.0, 0.25*BP_PER_IN, 0.0},
+      0.25f*BP_PER_IN, 0.0f, 0.25f*BP_PER_IN, 0.0f},
     {ms_A4 | MS_BIG_FLAG,	/* banner */
-      0.13*BP_PER_IN, 0.0, 0.13*BP_PER_IN, 0.0},
+      0.13f*BP_PER_IN, 0.0f, 0.13f*BP_PER_IN, 0.0f},
       /* BPD05054 claims left and right margins of 0.25 in. */
     {ms_none}
   },
@@ -311,27 +311,27 @@ static const eprn_PageDescription
       series 800 DeskJets.
     */
     {ms_Executive,
-      0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_Letter,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_Legal,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_A5,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_A4,	0.13*BP_PER_IN, 0.46*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_JISB5,	0.17*BP_PER_IN, 0.46*BP_PER_IN, 0.17*BP_PER_IN, 0.04*BP_PER_IN},
+      0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_Letter,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_Legal,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_A5,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_A4,	0.13f*BP_PER_IN, 0.46f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_JISB5,	0.17f*BP_PER_IN, 0.46f*BP_PER_IN, 0.17f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Postcard,
-      0.17*BP_PER_IN, 0.71*BP_PER_IN, 0.17*BP_PER_IN, 0.04*BP_PER_IN},
+      0.17f*BP_PER_IN, 0.71f*BP_PER_IN, 0.17f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_DoublePostcard,	/* not present in 'hpdj660c_sizes[]'; guessed */
-      0.17*BP_PER_IN, 0.71*BP_PER_IN, 0.17*BP_PER_IN, 0.04*BP_PER_IN},
+      0.17f*BP_PER_IN, 0.71f*BP_PER_IN, 0.17f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_A6 | PCL_CARD_FLAG,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Index4x6in,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_Index5x8in,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_Env10,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_EnvDL,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
-    {ms_EnvC6,	0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_Env10,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_EnvDL,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
+    {ms_EnvC6,	0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_EnvUS_A2,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_none}
   },
   hpdj850c_sizes[] = {
@@ -347,11 +347,11 @@ static const eprn_PageDescription
       First some shorthand notation for margin types. The order is:
         left, bottom, right, top.
     */
-#define type1	6.4*BP_PER_MM, 11.7*BP_PER_MM, 6.4*BP_PER_MM, 1.0*BP_PER_MM
-#define type2	3.4*BP_PER_MM, 11.7*BP_PER_MM, 3.4*BP_PER_MM, 1.0*BP_PER_MM
-#define type3	3.4*BP_PER_MM, 11.7*BP_PER_MM, 3.4*BP_PER_MM, 11.7*BP_PER_MM
-#define type4	3.2*BP_PER_MM, 11.7*BP_PER_MM, 3.2*BP_PER_MM, 1.0*BP_PER_MM
-#define type5	3.2*BP_PER_MM, 22.0*BP_PER_MM, 3.2*BP_PER_MM, 1.0*BP_PER_MM
+#define type1	6.4f*BP_PER_MM, 11.7f*BP_PER_MM, 6.4f*BP_PER_MM, 1.0f*BP_PER_MM
+#define type2	3.4f*BP_PER_MM, 11.7f*BP_PER_MM, 3.4f*BP_PER_MM, 1.0f*BP_PER_MM
+#define type3	3.4f*BP_PER_MM, 11.7f*BP_PER_MM, 3.4f*BP_PER_MM, 11.7f*BP_PER_MM
+#define type4	3.2f*BP_PER_MM, 11.7f*BP_PER_MM, 3.2f*BP_PER_MM, 1.0f*BP_PER_MM
+#define type5	3.2f*BP_PER_MM, 22.0f*BP_PER_MM, 3.2f*BP_PER_MM, 1.0f*BP_PER_MM
     {ms_Letter,		type1},
     {ms_Legal,		type1},
     {ms_Executive,	type1},
@@ -388,70 +388,70 @@ static const eprn_PageDescription
   hpdj1120c_sizes[] = {
    /* These values are from DJ1120C, pp. 11-12, and from BPD05567. I don't
       consider them particularly trustworthy. */
-    {ms_Executive,	0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN,
-                        0.12*BP_PER_IN},
-    {ms_Letter,		0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN,
-                        0.12*BP_PER_IN},
-    {ms_Legal,		0.25*BP_PER_IN, 0.46*BP_PER_IN, 0.25*BP_PER_IN,
-                        0.12*BP_PER_IN},
-    {ms_Tabloid,	0.20*BP_PER_IN, 0.46*BP_PER_IN, 0.20*BP_PER_IN,
-                        0.12*BP_PER_IN},
-    {ms_Statement,	0.20*BP_PER_IN, 0.46*BP_PER_IN, 0.20*BP_PER_IN,
-                        0.12*BP_PER_IN},	/* Not in BPD05567. */
-    {ms_HPSuperB,	0.20*BP_PER_IN, 0.46*BP_PER_IN, 0.20*BP_PER_IN,
-                        0.12*BP_PER_IN},
-    {ms_A6,		0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},	/* Not in BPD05567. */
-    {ms_A5,		0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_Executive,	0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
+    {ms_Letter,		0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
+    {ms_Legal,		0.25f*BP_PER_IN, 0.46f*BP_PER_IN, 0.25f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
+    {ms_Tabloid,	0.20f*BP_PER_IN, 0.46f*BP_PER_IN, 0.20f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
+    {ms_Statement,	0.20f*BP_PER_IN, 0.46f*BP_PER_IN, 0.20f*BP_PER_IN,
+                        0.12f*BP_PER_IN},	/* Not in BPD05567. */
+    {ms_HPSuperB,	0.20f*BP_PER_IN, 0.46f*BP_PER_IN, 0.20f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
+    {ms_A6,		0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},	/* Not in BPD05567. */
+    {ms_A5,		0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_A4,		0.20*BP_PER_IN, 0.46*BP_PER_IN, 0.20*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_A4,		0.20f*BP_PER_IN, 0.46f*BP_PER_IN, 0.20f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.13 in, 0.46 in, 0.13 in, 0.12 in. */
-    {ms_A3,		0.20*BP_PER_IN, 0.46*BP_PER_IN, 0.20*BP_PER_IN,
-                        0.12*BP_PER_IN},	/* Only in BPD05567. */
-    {ms_JISB5,		0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_A3,		0.20f*BP_PER_IN, 0.46f*BP_PER_IN, 0.20f*BP_PER_IN,
+                        0.12f*BP_PER_IN},	/* Only in BPD05567. */
+    {ms_JISB5,		0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_JISB4,		0.20*BP_PER_IN, 0.46*BP_PER_IN, 0.20*BP_PER_IN,
-                        0.12*BP_PER_IN},	/* Not in BPD05567. */
-    {ms_Postcard,	0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_JISB4,		0.20f*BP_PER_IN, 0.46f*BP_PER_IN, 0.20f*BP_PER_IN,
+                        0.12f*BP_PER_IN},	/* Not in BPD05567. */
+    {ms_Postcard,	0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_A6 | PCL_CARD_FLAG, 0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_A6 | PCL_CARD_FLAG, 0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_Index4x6in,	0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_Index4x6in,	0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_Index5x8in,	0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_Index5x8in,	0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_Env10,		0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_Env10,		0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_EnvDL,		0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_EnvDL,		0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_EnvC6,		0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_EnvC6,		0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_EnvUS_A2,	0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_EnvUS_A2,	0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_EnvChou3,	0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_EnvChou3,	0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_EnvChou4,	0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN,
-                        0.12*BP_PER_IN},
+    {ms_EnvChou4,	0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN,
+                        0.12f*BP_PER_IN},
       /* BPD05567: 0.12 in, 0.46 in, 0.12 in, 0.12 in. */
-    {ms_EnvKaku2,	0.20*BP_PER_IN, 0.46*BP_PER_IN, 0.20*BP_PER_IN,
-                        0.12*BP_PER_IN},	/* Not in BPD05567. */
+    {ms_EnvKaku2,	0.20f*BP_PER_IN, 0.46f*BP_PER_IN, 0.20f*BP_PER_IN,
+                        0.12f*BP_PER_IN},	/* Not in BPD05567. */
     /* Banners are listed only in BPD05567: */
     {ms_Letter | MS_BIG_FLAG,
-      0.25*BP_PER_IN, 0, 0.25*BP_PER_IN, 0.04*BP_PER_IN},
+      0.25f*BP_PER_IN, 0, 0.25f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_A4 | MS_BIG_FLAG,
-      0.13*BP_PER_IN, 0, 0.13*BP_PER_IN, 0.04*BP_PER_IN},
+      0.13f*BP_PER_IN, 0, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN},
     {ms_none}
   };
 
@@ -480,13 +480,13 @@ static const eprn_CustomPageDescription
     */
     { /* Page width 7.12 to 8.5 in */
       ms_CustomPageSize,
-      0.13*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN, 0.04*BP_PER_IN,
-      7.12*BP_PER_IN, 8.5*BP_PER_IN, 5.83*BP_PER_IN, 14*BP_PER_IN
+      0.13f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN, 0.04f*BP_PER_IN,
+      7.12f*BP_PER_IN, 8.5f*BP_PER_IN, 5.83f*BP_PER_IN, 14*BP_PER_IN
     },
     { /* Page width 5 to 7.12 in */
       ms_CustomPageSize,
-      0.13*BP_PER_IN, 0.71*BP_PER_IN, 0.125*BP_PER_IN, 0.04*BP_PER_IN,
-      5*BP_PER_IN, 7.12*BP_PER_IN, 5.83*BP_PER_IN, 14*BP_PER_IN
+      0.13f*BP_PER_IN, 0.71f*BP_PER_IN, 0.125f*BP_PER_IN, 0.04f*BP_PER_IN,
+      5*BP_PER_IN, 7.12f*BP_PER_IN, 5.83f*BP_PER_IN, 14*BP_PER_IN
     },
     {ms_none,  0, 0, 0, 0,  0, 0, 0, 0}
   },
@@ -494,8 +494,8 @@ static const eprn_CustomPageDescription
     /* Ranges from DJ6/8 p. 23, margins from A4 for the DJ 660C (BPD02519) */
     {
       ms_CustomPageSize,
-      0.13*BP_PER_IN, 0.46*BP_PER_IN, 0.13*BP_PER_IN, 0.04*BP_PER_IN,
-      5*BP_PER_IN, 8.5*BP_PER_IN,  148*BP_PER_MM, 14*BP_PER_IN
+      0.13f*BP_PER_IN, 0.46f*BP_PER_IN, 0.13f*BP_PER_IN, 0.04f*BP_PER_IN,
+      5*BP_PER_IN, 8.5f*BP_PER_IN,  148*BP_PER_MM, 14*BP_PER_IN
     },
     {ms_none,  0, 0, 0, 0,  0, 0, 0, 0}
   },
@@ -520,7 +520,7 @@ static const eprn_CustomPageDescription
     {  /* Taken from DJ1120C pp. 10 and 12. The minimum sizes are guessed
           (smallest supported discrete dimensions) */
       ms_CustomPageSize,
-      0.125*BP_PER_IN, 0.46*BP_PER_IN, 0.125*BP_PER_IN, 0.12*BP_PER_IN,
+      0.125f*BP_PER_IN, 0.46f*BP_PER_IN, 0.125f*BP_PER_IN, 0.12f*BP_PER_IN,
       90*BP_PER_MM, 13*BP_PER_IN, 146*BP_PER_MM, 19*BP_PER_IN,
     },
     {ms_none,  0, 0, 0, 0,  0, 0, 0, 0}
@@ -533,7 +533,7 @@ static const eprn_CustomPageDescription
     {
       ms_CustomPageSize,
       type2,	/* use DJ 850C margins */
-      1.0E-37, 1.0E37,  1.0E-37, 1.0E37
+      1.0E-37f, 1.0E37f,  1.0E-37f, 1.0E37f
     },
     {ms_none,  0, 0, 0, 0,  0, 0, 0, 0}
   };
@@ -731,36 +731,36 @@ const pcl_PrinterDescription pcl3_printers[] = {
   { HPDJ500,	pcl_level_3plus_DJ500,
     {"HP DeskJet 500", hpdj500_sizes, NULL, 0.0, ci_old_mono } },
   { HPDJ500C,	pcl_level_3plus_S5,
-    { "HP DeskJet 500C", hpdj500c_sizes, NULL, 0.17*BP_PER_IN, ci_hpdj500c } },
+    { "HP DeskJet 500C", hpdj500c_sizes, NULL, 0.17f*BP_PER_IN, ci_hpdj500c } },
   { HPDJ510,	pcl_level_3plus_S5,
     { "HP DeskJet 510", common_sizes, NULL, 0.0, ci_old_mono } },
   { HPDJ520,	pcl_level_3plus_S5,
     { "HP DeskJet 520", common_sizes, NULL, 0.0, ci_old_mono } },
   { HPDJ540,	pcl_level_3plus_S68,
     { "HP DeskJet 540", hpdj540_sizes, hpdj540_custom_sizes,
-      0.13*BP_PER_IN, ci_hpdj540 } },
+      0.13f*BP_PER_IN, ci_hpdj540 } },
   { HPDJ550C,	pcl_level_3plus_S5,
-    { "HP DeskJet 550C", common_sizes, NULL, 0.13*BP_PER_IN, ci_hpdj5xx_cmyk }},
+    { "HP DeskJet 550C", common_sizes, NULL, 0.13f*BP_PER_IN, ci_hpdj5xx_cmyk }},
   { HPDJ560C,	pcl_level_3plus_S5,
-    { "HP DeskJet 560C", common_sizes, NULL, 0.13*BP_PER_IN, ci_hpdj5xx_cmyk }},
+    { "HP DeskJet 560C", common_sizes, NULL, 0.13f*BP_PER_IN, ci_hpdj5xx_cmyk }},
   { pcl3_generic_old, pcl_level_3plus_ERG_both,
     { "unspecified PCL-3+ printer (old)", common_sizes, NULL, 0.0, ci_any } },
   { HPDJ600,	pcl_level_3plus_S68,
     { "HP DeskJet 600", hpdj6xx_and_8xx_sizes, hpdj_6xx_and_8xx_custom_sizes,
-      0.13*BP_PER_IN, ci_hpdj600 } },
+      0.13f*BP_PER_IN, ci_hpdj600 } },
   { HPDJ660C,	pcl_level_3plus_S68,
     { "HP DeskJet 660C", hpdj660c_sizes, hpdj_6xx_and_8xx_custom_sizes,
-      0.13*BP_PER_IN, ci_hpdj6xx } },
+      0.13f*BP_PER_IN, ci_hpdj6xx } },
   { HPDJ670C,	pcl_level_3plus_S68,
     { "HP DeskJet 670C", hpdj660c_sizes, hpdj_6xx_and_8xx_custom_sizes,
-      0.13*BP_PER_IN, ci_hpdj6xx } },
+      0.13f*BP_PER_IN, ci_hpdj6xx } },
     /* This printer can be treated as the DJ 660C (DJ6/8 p. 2). */
   { HPDJ680C,	pcl_level_3plus_S68,
     { "HP DeskJet 680C", hpdj680c_sizes, hpdj_6xx_and_8xx_custom_sizes,
-      0.13*BP_PER_IN, ci_hpdj6xx } },
+      0.13f*BP_PER_IN, ci_hpdj6xx } },
   { HPDJ690C,	pcl_level_3plus_S68,
     { "HP DeskJet 690C", hpdj680c_sizes, hpdj_6xx_and_8xx_custom_sizes,
-      0.13*BP_PER_IN, ci_hpdj6xx } },
+      0.13f*BP_PER_IN, ci_hpdj6xx } },
   { HPDJ850C,	pcl_level_3plus_S68,
     { "HP DeskJet 850C", hpdj850c_sizes, hpdj850c_custom_sizes,
       0.0, ci_hpdj85x } },
diff --git a/contrib/pcl3/src/pclgen.c b/contrib/pcl3/src/pclgen.c
index 0670d88..b5671ec 100644
--- a/contrib/pcl3/src/pclgen.c
+++ b/contrib/pcl3/src/pclgen.c
@@ -469,7 +469,7 @@ int pcl3_init_file(gs_memory_t *mem, gp_file *out, pcl_FileData *data)
     gp_fprintf(out, "\033*r%dU",
         /* PCL: Set Number of Planes per Row/Simple Color */
       data->palette == pcl_RGB? 3:	/* RGB palette */
-      -data->number_of_colorants);	/* (K)(CMY) palette */
+      -(int)data->number_of_colorants);	/* (K)(CMY) palette */
 
   /* Configure Raster Data */
   if (needs_CRD) {
diff --git a/devices/gdevphex.c b/devices/gdevphex.c
index 590baf2..f5fac8a 100644
--- a/devices/gdevphex.c
+++ b/devices/gdevphex.c
@@ -1347,10 +1347,10 @@ float	margins[ 4 ];						/* L, B, R, T					*/
 
         width  = pdev->width  / pdev->x_pixels_per_inch;
 
-        margins[ 0 ] = 0.12;
-        margins[ 1 ] = 0.5;
-        margins[ 2 ] = 0.12;
-        margins[ 3 ] = ( width > 11.46+0.12 ) ? width - (11.46+0.12) : 0.12;
+        margins[ 0 ] = 0.12f;
+        margins[ 1 ] = 0.5f;
+        margins[ 2 ] = 0.12f;
+        margins[ 3 ] = ( width > 11.46f+0.12f ) ? width - (11.46f+0.12f) : 0.12f;
 
         gx_device_set_margins( pdev, margins, true );
         return( gdev_prn_open( pdev ) );
@@ -1399,7 +1399,7 @@ int		i;
         m = 255 - ( g >> ( gx_color_value_bits - 8 ) );
         y = 255 - ( b >> ( gx_color_value_bits - 8 ) );
 
-        k = xtrans[ min( c, min( m, y ) ) ] * 0.8; /* FIXME:empirical constant */
+        k = (int)(xtrans[ min( c, min( m, y ) ) ] * 0.8); /* FIXME:empirical constant */
         c -= k;
         m -= k;
         y -= k;
@@ -1454,15 +1454,15 @@ CVAL	r, g, b;
 
         if ( MAP_RGB_ADOBE ) {
 
-                r = gx_max_color_value * ( 1.0 - min( 1.0, (c / 255.0 + k / 255.0) ) );
-                g = gx_max_color_value * ( 1.0 - min( 1.0, (m / 255.0 + k / 255.0) ) );
-                b = gx_max_color_value * ( 1.0 - min( 1.0, (y / 255.0 + k / 255.0) ) );
+                r = (CVAL)(gx_max_color_value * ( 1.0 - min( 1.0, (c / 255.0 + k / 255.0) ) ));
+                g = (CVAL)(gx_max_color_value * ( 1.0 - min( 1.0, (m / 255.0 + k / 255.0) ) ));
+                b = (CVAL)(gx_max_color_value * ( 1.0 - min( 1.0, (y / 255.0 + k / 255.0) ) ));
         }
         else {
 
-                r = gx_max_color_value * ( 1.0 - c / 255.0 ) * ( 1.0 - k / 255.0);
-                g = gx_max_color_value * ( 1.0 - m / 255.0 ) * ( 1.0 - k / 255.0);
-                b = gx_max_color_value * ( 1.0 - y / 255.0 ) * ( 1.0 - k / 255.0);
+                r = (CVAL)(gx_max_color_value * ( 1.0 - c / 255.0 ) * ( 1.0 - k / 255.0));
+                g = (CVAL)(gx_max_color_value * ( 1.0 - m / 255.0 ) * ( 1.0 - k / 255.0));
+                b = (CVAL)(gx_max_color_value * ( 1.0 - y / 255.0 ) * ( 1.0 - k / 255.0));
         }
 
         prgb[ 0 ] = r;
@@ -1709,7 +1709,7 @@ double		psize;
         /* Check if the requested width is within device limits.
            The calculations are in 1440 dpi units. */
 
-        start = 1440.0 * dev_l_margin( device );
+        start = (int)(1440.0 * dev_l_margin( device ));
 
         x = xres == 360 ? 4 : xres == 720 ? 2 : 1;
 
@@ -1772,9 +1772,9 @@ double		psize;
 
         /* Set up papersize and margins */
 
-        SendPaper( stream, device->height / device->y_pixels_per_inch * unit );
-        SendMargin( stream, ( psize - dev_b_margin( device ) ) * unit,
-                                            dev_t_margin( device ) * unit );
+        SendPaper( stream, (int)(device->height / device->y_pixels_per_inch * unit) );
+        SendMargin( stream, (int)(( psize - dev_b_margin( device ) ) * unit),
+                            (int)(          dev_t_margin( device )   * unit) );
 
         /* Dot size as per user setting */
 

----------------------------------------------------------------------
commit 67a101f3eb888bc651cc13bfb06280a669a84967
Author: Robin Watts <[email protected]>
Date:   Wed Oct 30 17:40:18 2019 +0000

    Fix contrib.mak to work on windows.
    
    Building Debug-contrib|win32 will currently attempt to run
    contrib.mak 3 times due to poor commenting out of make lines.
    For me, this manifested itself as new instances of Visual
    Studio starting up and attempting to "upgrade" the makefile.

diff --git a/contrib/contrib.mak b/contrib/contrib.mak
index 5411ae9..ec02a73 100644
--- a/contrib/contrib.mak
+++ b/contrib/contrib.mak
@@ -1200,15 +1200,15 @@ $(DD)rpdl.dev : $(rpdl_) $(DD)page.dev \
 ### ---------- RICOH RPDL IV(600dpi) printer devices ---------- ###
 #rpdl_=$(DEVOBJ)gdevrpdl.$(OBJ)
 #$(DEVOBJ)gdevrpdl.$(OBJ) : $(JAPSRC)gdevrpdl.c \
-                           $(CONTRIB_MAK) $(MAKEDIRS)
+#                           $(CONTRIB_MAK) $(MAKEDIRS)
 #	$(DEVCC) $(DEVO_)gdevrpdl.$(OBJ) $(C_) $(JAPSRC)gdevrpdl.c
 #
 #$(DD)nx100f.dev : $(rpdl_) $(DD)page.dev \
-                           $(CONTRIB_MAK) $(MAKEDIRS)
+#                           $(CONTRIB_MAK) $(MAKEDIRS)
 #	$(SETPDEV2) $(DD)nx100f $(rpdl_)
 #
 #$(DD)nx100v.dev : $(rpdl_) $(DD)page.dev \
-                           $(CONTRIB_MAK) $(MAKEDIRS)
+#                           $(CONTRIB_MAK) $(MAKEDIRS)
 #	$(SETPDEV2) $(DD)nx100v $(rpdl_)
 
 ### ------------ The ALPS Micro Dry printer devices ------------ ###


Summary of changes:
 base/gxdevice.h               |   4 +-
 contrib/contrib.mak           |   6 +-
 contrib/eplaser/gdevescv.c    |   8 ++
 contrib/gdevbjc_.c            |  28 ++--
 contrib/gdevbjc_.h            |   4 +-
 contrib/gdevbjca.c            |  40 ++++--
 contrib/gdevcd8.c             |  65 ++++-----
 contrib/gdevdj9.c             |  36 ++---
 contrib/gdevgdi.c             |   4 +-
 contrib/gdevln03.c            |   2 +-
 contrib/gdevlx32.c            |  12 +-
 contrib/gdevmd2k.c            |  26 ++--
 contrib/gdevop4w.c            |   8 +-
 contrib/japanese/gdev10v.c    |   4 +-
 contrib/japanese/gdevalps.c   |   6 +-
 contrib/japanese/gdevespg.c   |  20 +--
 contrib/japanese/gdevmjc.c    |  28 ++--
 contrib/japanese/gdevnpdl.c   |  68 +++++-----
 contrib/japanese/gdevrpdl.c   |   8 +-
 contrib/lips4/gdevl4r.c       |  36 ++---
 contrib/lips4/gdevlips.h      |  32 ++---
 contrib/pcl3/eprn/mediasize.c |   6 +-
 contrib/pcl3/eprn/mediasize.h |   4 +-
 contrib/pcl3/src/gdevpcl3.c   |   4 +-
 contrib/pcl3/src/pclcap.c     | 298 +++++++++++++++++++++---------------------
 contrib/pcl3/src/pclgen.c     |   2 +-
 devices/gdevpdfimg.c          |   7 +
 devices/gdevphex.c            |  30 ++---
 devices/gdevtifs.c            |   5 +
 devices/vector/gdevpdfe.c     |   5 +
 devices/vector/gdevpsu.c      |   5 +
 31 files changed, 429 insertions(+), 382 deletions(-)