diff --git a/magick/animate.c b/magick/animate.c
index 6dd801f..8b66ec5 100644
--- a/magick/animate.c
+++ b/magick/animate.c
@@ -965,12 +965,12 @@
   if (display_image->debug != MagickFalse)
     {
       (void) LogMagickEvent(X11Event,GetMagickModule(),
-        "Image: %s[%lu] %lux%lu ",image_list[0]->filename,
-        (unsigned long) image_list[0]->scene,(unsigned long)
-        image_list[0]->columns,(unsigned long) image_list[0]->rows);
+        "Image: %s[%.20g] %.20gx%.20g ",image_list[0]->filename,(double)
+        image_list[0]->scene,(double) image_list[0]->columns,(double)
+        image_list[0]->rows);
       if (image_list[0]->colors != 0)
-        (void) LogMagickEvent(X11Event,GetMagickModule(),"%luc ",
-          (unsigned long) image_list[0]->colors);
+        (void) LogMagickEvent(X11Event,GetMagickModule(),"%.20gc ",(double)
+          image_list[0]->colors);
       (void) LogMagickEvent(X11Event,GetMagickModule(),"%s",
         image_list[0]->magick);
     }
@@ -1088,11 +1088,11 @@
     if (display_image->debug != MagickFalse)
       {
         (void) LogMagickEvent(X11Event,GetMagickModule(),
-          "Image: [%lu] %s %ux%u ",(unsigned long) image_list[scene]->scene,
-          image_list[scene]->filename,columns,rows);
+          "Image: [%.20g] %s %.20gx%.20g ",(double) image_list[scene]->scene,
+          image_list[scene]->filename,(double) columns,(double) rows);
         if (image_list[scene]->colors != 0)
-          (void) LogMagickEvent(X11Event,GetMagickModule(),"%luc ",
-            (unsigned long) image_list[scene]->colors);
+          (void) LogMagickEvent(X11Event,GetMagickModule(),"%.20gc ",(double)
+            image_list[scene]->colors);
         (void) LogMagickEvent(X11Event,GetMagickModule(),"%s",
           image_list[scene]->magick);
       }
@@ -1535,12 +1535,12 @@
   if (display_image->debug != MagickFalse)
     {
       (void) LogMagickEvent(X11Event,GetMagickModule(),
-        "Image: %s[%lu] %lux%lu ",display_image->filename,(unsigned long)
-        display_image->scene,(unsigned long) display_image->columns,
-        (unsigned long) display_image->rows);
+        "Image: %s[%.20g] %.20gx%.20g ",display_image->filename,(double)
+        display_image->scene,(double) display_image->columns,(double)
+        display_image->rows);
       if (display_image->colors != 0)
-        (void) LogMagickEvent(X11Event,GetMagickModule(),"%luc ",
-          (unsigned long) display_image->colors);
+        (void) LogMagickEvent(X11Event,GetMagickModule(),"%.20gc ",(double)
+          display_image->colors);
       (void) LogMagickEvent(X11Event,GetMagickModule(),"%s",
         display_image->magick);
     }
@@ -1656,8 +1656,8 @@
       */
       GetPathComponent(display_image->magick_filename,TailPath,filename);
       (void) FormatMagickString(windows->image.name,MaxTextExtent,
-        "%s: %s[%lu of %lu]",MagickPackageName,filename,(unsigned long)
-        display_image->scene,(unsigned long) number_scenes);
+        "%s: %s[%.20g of %.20g]",MagickPackageName,filename,(double)
+        display_image->scene,(double) number_scenes);
       (void) CopyMagickString(windows->image.icon_name,filename,MaxTextExtent);
     }
   if (resource_info->immutable != MagickFalse)
@@ -1935,11 +1935,11 @@
     if (image_list[scene]->debug != MagickFalse)
       {
         (void) LogMagickEvent(X11Event,GetMagickModule(),
-          "Image: [%lu] %s %ux%u ",(unsigned long) image_list[scene]->scene,
-          image_list[scene]->filename,columns,rows);
+          "Image: [%.20g] %s %.20gx%.20g ",(double) image_list[scene]->scene,
+          image_list[scene]->filename,(double) columns,(double) rows);
         if (image_list[scene]->colors != 0)
-          (void) LogMagickEvent(X11Event,GetMagickModule(),"%luc ",
-            (unsigned long) image_list[scene]->colors);
+          (void) LogMagickEvent(X11Event,GetMagickModule(),"%.20gc ",(double)
+            image_list[scene]->colors);
         (void) LogMagickEvent(X11Event,GetMagickModule(),"%s",
           image_list[scene]->magick);
       }
@@ -1963,8 +1963,8 @@
         while ((p > image_list[scene]->magick_filename) && (*(p-1) != '/'))
           p--;
         (void) FormatMagickString(windows->image.name,MaxTextExtent,
-          "%s: %s[%lu of %lu]",MagickPackageName,p,(unsigned long) scene+1,
-          (unsigned long) number_scenes);
+          "%s: %s[%.20g of %.20g]",MagickPackageName,p,(double) scene+1,
+          (double) number_scenes);
       }
     status=XStringListToTextProperty(&windows->image.name,1,&window_name);
     if (status != Success)
@@ -2082,8 +2082,8 @@
               while ((p > image_list[scene]->filename) && (*(p-1) != '/'))
                 p--;
               (void) FormatMagickString(windows->image.name,MaxTextExtent,
-                "%s: %s[%lu of %lu]",MagickPackageName,p,(unsigned long)
-                scene+1,(unsigned long) number_scenes);
+                "%s: %s[%.20g of %.20g]",MagickPackageName,p,(double)
+                scene+1,(double) number_scenes);
               if (resource_info->title != (char *) NULL)
                 {
                   char
@@ -2931,8 +2931,8 @@
       /*
         Request JPEG quality from user.
       */
-      (void) FormatMagickString(quality,MaxTextExtent,"%lu",
-        (unsigned long) image_info->quality);
+      (void) FormatMagickString(quality,MaxTextExtent,"%.20g",(double)
+        image_info->quality);
       status=XDialogWidget(display,windows,"Save","Enter JPEG quality:",
         quality);
       if (*quality == '\0')
diff --git a/magick/annotate.c b/magick/annotate.c
index 0f8dc84..2a35902 100644
--- a/magick/annotate.c
+++ b/magick/annotate.c
@@ -395,7 +395,7 @@
         undercolor_info->affine.tx=offset.x-draw_info->affine.ry*metrics.ascent;
         undercolor_info->affine.ty=offset.y-draw_info->affine.sy*metrics.ascent;
         (void) FormatMagickString(primitive,MaxTextExtent,
-          "rectangle 0,0 %g,%lu",metrics.origin.x,(unsigned long) height);
+          "rectangle 0,0 %g,%.20g",metrics.origin.x,(double) height);
         (void) CloneString(&undercolor_info->primitive,primitive);
         (void) DrawImage(image,undercolor_info);
         (void) DestroyDrawInfo(undercolor_info);
@@ -1621,8 +1621,8 @@
   text=DestroyString(text);
   (void) fprintf(file,"showpage\n");
   (void) fclose(file);
-  (void) FormatMagickString(geometry,MaxTextExtent,"%ldx%ld+0+0!",(long)
-    floor(extent.x+0.5),(long) floor(extent.y+0.5));
+  (void) FormatMagickString(geometry,MaxTextExtent,"%.20gx%.20g+0+0!",
+    floor(extent.x+0.5),floor(extent.y+0.5));
   annotate_info=AcquireImageInfo();
   (void) FormatMagickString(annotate_info->filename,MaxTextExtent,"ps:%s",
     filename);
@@ -1664,9 +1664,9 @@
         ExpandAffine(&draw_info->affine)*draw_info->pointsize+0.5);
       crop_info.y=(ssize_t) ceil((resolution.y/DefaultResolution)*extent.y/8.0-
         0.5);
-      (void) FormatMagickString(geometry,MaxTextExtent,"%lux%lu%+ld%+ld",
-        (unsigned long) crop_info.width,(unsigned long) crop_info.height,
-        (long) crop_info.x,(long) crop_info.y);
+      (void) FormatMagickString(geometry,MaxTextExtent,
+        "%.20gx%.20g%+.20gx%+.20g",(double) crop_info.width,(double)
+        crop_info.height,(double) crop_info.x,(double) crop_info.y);
       (void) TransformImage(&annotate_image,geometry,(char *) NULL);
     }
   metrics->pixels_per_em.x=(resolution.y/DefaultResolution)*
@@ -1957,8 +1957,8 @@
           atan2(draw_info->affine.rx,draw_info->affine.sx);
     }
   (void) FormatMagickString(annotate_info.geometry,MaxTextExtent,
-    "%lux%lu+%ld+%ld",(unsigned long) width,(unsigned long) height,(long)
-    ceil(offset->x-0.5),(long) ceil(offset->y-metrics->ascent-metrics->descent+
+    "%.20gx%.20g%+.20gx%+.20g",(double) width,(double) height,
+    ceil(offset->x-0.5),ceil(offset->y-metrics->ascent-metrics->descent+
     draw_info->interline_spacing-0.5));
   pixel.pen_color.red=ScaleQuantumToShort(draw_info->fill.red);
   pixel.pen_color.green=ScaleQuantumToShort(draw_info->fill.green);
diff --git a/magick/attribute.c b/magick/attribute.c
index bd85ee4..e2278b0 100644
--- a/magick/attribute.c
+++ b/magick/attribute.c
@@ -274,8 +274,17 @@
 %
 */
 
-MagickExport size_t GetImageDepth(const Image *image,
-  ExceptionInfo *exception)
+static inline QuantumAny GetPixelDepth(const Quantum pixel,
+  const QuantumAny scale)
+{
+#if !defined(MAGICKCORE_HDRI_SUPPORT)
+  return((QuantumAny) (scale*(pixel/scale)));
+#else
+  return((QuantumAny) (scale*(pixel/scale)+0.5));
+#endif
+}
+
+MagickExport size_t GetImageDepth(const Image *image,ExceptionInfo *exception)
 {
   return(GetImageChannelDepth(image,AllChannels,exception));
 }
@@ -338,19 +347,19 @@
             status;
 
           QuantumAny
-            range;
+            scale;
 
           status=0;
-          range=GetQuantumRange(current_depth[id]);
+          scale=1;
+          if (depth < QuantumDepth)
+            scale=QuantumRange/((QuantumAny) QuantumRange >> (QuantumDepth-
+              current_depth[id]));
           if ((channel & RedChannel) != 0)
-            status|=p->red != ScaleAnyToQuantum(ScaleQuantumToAny(p->red,
-              range),range);
+            status|=(QuantumAny) p->red != GetPixelDepth(p->red,scale);
           if ((channel & GreenChannel) != 0)
-            status|=p->green != ScaleAnyToQuantum(ScaleQuantumToAny(p->green,
-              range),range);
+            status|=(QuantumAny) p->green != GetPixelDepth(p->green,scale);
           if ((channel & BlueChannel) != 0)
-            status|=p->blue != ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,
-              range),range);
+            status|=(QuantumAny) p->blue != GetPixelDepth(p->blue,scale);
           if (status == 0)
             break;
           current_depth[id]++;
@@ -395,26 +404,24 @@
           status;
 
         QuantumAny
-          range;
+          scale;
 
         status=0;
-        range=GetQuantumRange(current_depth[id]);
+        scale=1;
+        if (depth < QuantumDepth)
+          scale=QuantumRange/((QuantumAny) QuantumRange >> (QuantumDepth-
+            current_depth[id]));
         if ((channel & RedChannel) != 0)
-          status|=p->red != ScaleAnyToQuantum(ScaleQuantumToAny(p->red,range),
-            range);
+          status|=(QuantumAny) p->red != GetPixelDepth(p->red,scale);
         if ((channel & GreenChannel) != 0)
-          status|=p->green != ScaleAnyToQuantum(ScaleQuantumToAny(p->green,
-            range),range);
+          status|=(QuantumAny) p->green != GetPixelDepth(p->green,scale);
         if ((channel & BlueChannel) != 0)
-          status|=p->blue != ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,range),
-            range);
+          status|=(QuantumAny) p->blue != GetPixelDepth(p->blue,scale);
         if (((channel & OpacityChannel) != 0) && (image->matte != MagickFalse))
-          status|=p->opacity != ScaleAnyToQuantum(ScaleQuantumToAny(p->opacity,
-            range),range);
+          status|=(QuantumAny) p->opacity != GetPixelDepth(p->opacity,scale);
         if (((channel & IndexChannel) != 0) &&
             (image->colorspace == CMYKColorspace))
-          status|=indexes[x] != ScaleAnyToQuantum(ScaleQuantumToAny(indexes[x],
-            range),range);
+          status|=(QuantumAny) indexes[x] != GetPixelDepth(indexes[x],scale);
         if (status == 0)
           break;
         current_depth[id]++;
@@ -815,6 +822,12 @@
 %
 */
 
+static inline Quantum SetPixelDepth(const Quantum pixel,
+  const QuantumAny scale)
+{
+  return((Quantum) (scale*(pixel/scale)));
+}
+
 MagickExport MagickBooleanType SetImageDepth(Image *image,
   const size_t depth)
 {
@@ -837,7 +850,7 @@
     status;
 
   QuantumAny
-    range;
+    scale;
 
   assert(image != (Image *) NULL);
   if (image->debug != MagickFalse)
@@ -853,7 +866,9 @@
     Scale pixels to desired depth.
   */
   status=MagickTrue;
-  range=GetQuantumRange(depth);
+  scale=1;
+  if (depth < QuantumDepth)
+    scale=QuantumRange/((QuantumAny) QuantumRange >> (QuantumDepth-depth));
   exception=(&image->exception);
   image_view=AcquireCacheView(image);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
@@ -883,16 +898,16 @@
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       if ((channel & RedChannel) != 0)
-        q->red=ScaleAnyToQuantum(ScaleQuantumToAny(q->red,range),range);
+        q->red=SetPixelDepth(q->red,scale);
       if ((channel & GreenChannel) != 0)
-        q->green=ScaleAnyToQuantum(ScaleQuantumToAny(q->green,range),range);
+        q->green=SetPixelDepth(q->green,scale);
       if ((channel & BlueChannel) != 0)
-        q->blue=ScaleAnyToQuantum(ScaleQuantumToAny(q->blue,range),range);
+        q->green=SetPixelDepth(q->blue,scale);
       if (((channel & OpacityChannel) != 0) && (image->matte != MagickFalse))
-        q->opacity=ScaleAnyToQuantum(ScaleQuantumToAny(q->opacity,range),range);
+        q->opacity=SetPixelDepth(q->opacity,scale);
       if (((channel & IndexChannel) != 0) &&
           (image->colorspace == CMYKColorspace))
-        indexes[x]=ScaleAnyToQuantum(ScaleQuantumToAny(indexes[x],range),range);
+        indexes[x]=SetPixelDepth(indexes[x],scale);
       q++;
     }
     if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
@@ -921,14 +936,13 @@
       for (i=0; i < (ssize_t) image->colors; i++)
       {
         if ((channel & RedChannel) != 0)
-          p->red=ScaleAnyToQuantum(ScaleQuantumToAny(p->red,range),range);
+          p->red=SetPixelDepth(p->red,scale);
         if ((channel & GreenChannel) != 0)
-          p->green=ScaleAnyToQuantum(ScaleQuantumToAny(p->green,range),range);
+          p->green=SetPixelDepth(p->green,scale);
         if ((channel & BlueChannel) != 0)
-          p->blue=ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,range),range);
+          p->blue=SetPixelDepth(p->blue,scale);
         if ((channel & OpacityChannel) != 0)
-          p->opacity=ScaleAnyToQuantum(ScaleQuantumToAny(p->opacity,range),
-            range);
+          p->opacity=SetPixelDepth(p->opacity,scale);
         p++;
       }
     }
diff --git a/magick/blob.c b/magick/blob.c
index 8f0224b..b02d938 100644
--- a/magick/blob.c
+++ b/magick/blob.c
@@ -2350,11 +2350,11 @@
               GetPathComponent(image->filename,RootPath,path);
               GetPathComponent(image->filename,ExtensionPath,extension);
               if (*extension == '\0')
-                (void) FormatMagickString(filename,MaxTextExtent,"%s-%lu",
-                  path,(unsigned long) image->scene);
+                (void) FormatMagickString(filename,MaxTextExtent,"%s-%.20g",
+                  path,(double) image->scene);
               else
                 (void) FormatMagickString(filename,MaxTextExtent,
-                  "%s-%lu.%s",path,(unsigned long) image->scene,extension);
+                  "%s-%.20g.%s",path,(double) image->scene,extension);
             }
           (void) CopyMagickString(image->filename,filename,MaxTextExtent);
 #if defined(macintosh)
@@ -2416,7 +2416,7 @@
                   count=fread(magick,1,sizeof(magick),image->blob->file);
                   (void) rewind(image->blob->file);
                   (void) LogMagickEvent(BlobEvent,GetMagickModule(),
-                     "  read %lu magic header bytes",(unsigned long) count);
+                     "  read %.20g magic header bytes",(double) count);
 #if defined(MAGICKCORE_ZLIB_DELEGATE)
                   if (((int) magick[0] == 0x1F) && ((int) magick[1] == 0x8B) &&
                       ((int) magick[2] == 0x08))
diff --git a/magick/cache.c b/magick/cache.c
index 8c09689..7110780 100644
--- a/magick/cache.c
+++ b/magick/cache.c
@@ -4077,8 +4077,8 @@
   cache_info=(CacheInfo *) image->cache;
   source_info=(*cache_info);
   source_info.file=(-1);
-  (void) FormatMagickString(cache_info->filename,MaxTextExtent,"%s[%lu]",
-    image->filename,(unsigned long) GetImageIndexInList(image));
+  (void) FormatMagickString(cache_info->filename,MaxTextExtent,"%s[%.20g]",
+    image->filename,(double) GetImageIndexInList(image));
   cache_info->mode=mode;
   cache_info->rows=image->rows;
   cache_info->columns=image->columns;
@@ -4125,10 +4125,10 @@
                   (void) FormatMagickSize(cache_info->length,MagickTrue,
                     format);
                   (void) FormatMagickString(message,MaxTextExtent,
-                    "open %s (%s memory, %lux%lu %sB)",cache_info->filename,
+                    "open %s (%s memory, %.20gx%.20g %sB)",cache_info->filename,
                     cache_info->mapped != MagickFalse ? "anonymous" : "heap",
-                    (unsigned long) cache_info->columns,(unsigned long)
-                    cache_info->rows,format);
+                    (double) cache_info->columns,(double) cache_info->rows,
+                    format);
                   (void) LogMagickEvent(CacheEvent,GetMagickModule(),"%s",
                     message);
                 }
@@ -4219,10 +4219,10 @@
                   (void) FormatMagickSize(cache_info->length,MagickTrue,
                     format);
                   (void) FormatMagickString(message,MaxTextExtent,
-                    "open %s (%s[%d], memory-mapped, %lux%lu %sB)",
+                    "open %s (%s[%d], memory-mapped, %.20gx%.20g %sB)",
                     cache_info->filename,cache_info->cache_filename,
-                    cache_info->file,(unsigned long) cache_info->columns,
-                    (unsigned long) cache_info->rows,format);
+                    cache_info->file,(double) cache_info->columns,(double)
+                    cache_info->rows,format);
                   (void) LogMagickEvent(CacheEvent,GetMagickModule(),"%s",
                     message);
                 }
@@ -4240,9 +4240,9 @@
     {
       (void) FormatMagickSize(cache_info->length,MagickFalse,format);
       (void) FormatMagickString(message,MaxTextExtent,
-        "open %s (%s[%d], disk, %lux%lu %sB)",cache_info->filename,
-        cache_info->cache_filename,cache_info->file,(unsigned long)
-        cache_info->columns,(unsigned long) cache_info->rows,format);
+        "open %s (%s[%d], disk, %.20gx%.20g %sB)",cache_info->filename,
+        cache_info->cache_filename,cache_info->file,(double)
+        cache_info->columns,(double) cache_info->rows,format);
       (void) LogMagickEvent(CacheEvent,GetMagickModule(),"%s",message);
     }
   return(MagickTrue);
@@ -4733,10 +4733,10 @@
   }
   if ((cache_info->debug != MagickFalse) &&
       (QuantumTick((MagickOffsetType) nexus_info->region.y,cache_info->rows) != MagickFalse))
-    (void) LogMagickEvent(CacheEvent,GetMagickModule(),"%s[%lux%lu%+ld%+ld]",
-      cache_info->filename,(unsigned long) nexus_info->region.width,
-      (unsigned long) nexus_info->region.height,(long) nexus_info->region.x,
-      (long) nexus_info->region.y);
+    (void) LogMagickEvent(CacheEvent,GetMagickModule(),
+      "%s[%.20gx%.20g%+.20gx%+.20g]",cache_info->filename,(double)
+      nexus_info->region.width,(double) nexus_info->region.height,(double)
+      nexus_info->region.x,(double) nexus_info->region.y);
   return(MagickTrue);
 }
 
@@ -4864,10 +4864,10 @@
   }
   if ((cache_info->debug != MagickFalse) &&
       (QuantumTick((MagickOffsetType) nexus_info->region.y,cache_info->rows) != MagickFalse))
-    (void) LogMagickEvent(CacheEvent,GetMagickModule(),"%s[%lux%lu%+ld%+ld]",
-      cache_info->filename,(unsigned long) nexus_info->region.width,
-      (unsigned long) nexus_info->region.height,(long) nexus_info->region.x,
-      (long) nexus_info->region.y);
+    (void) LogMagickEvent(CacheEvent,GetMagickModule(),
+      "%s[%.20gx%.20g%+.20gx%+.20g]",cache_info->filename,(double)
+      nexus_info->region.width,(double) nexus_info->region.height,(double)
+      nexus_info->region.x,(double) nexus_info->region.y);
   return(MagickTrue);
 }
 
@@ -5449,10 +5449,10 @@
   }
   if ((cache_info->debug != MagickFalse) &&
       (QuantumTick((MagickOffsetType) nexus_info->region.y,cache_info->rows) != MagickFalse))
-    (void) LogMagickEvent(CacheEvent,GetMagickModule(),"%s[%lux%lu%+ld%+ld]",
-      cache_info->filename,(unsigned long) nexus_info->region.width,
-      (unsigned long) nexus_info->region.height,(long) nexus_info->region.x,
-      (long) nexus_info->region.y);
+    (void) LogMagickEvent(CacheEvent,GetMagickModule(),
+      "%s[%.20gx%.20g%+.20gx%+.20g]",cache_info->filename,(double)
+      nexus_info->region.width,(double) nexus_info->region.height,(double)
+      nexus_info->region.x,(double) nexus_info->region.y);
   return(MagickTrue);
 }
 
@@ -5580,9 +5580,9 @@
   }
   if ((cache_info->debug != MagickFalse) &&
       (QuantumTick((MagickOffsetType) nexus_info->region.y,cache_info->rows) != MagickFalse))
-    (void) LogMagickEvent(CacheEvent,GetMagickModule(),"%s[%lux%lu%+ld%+ld]",
-      cache_info->filename,(unsigned long) nexus_info->region.width,
-      (unsigned long) nexus_info->region.height,(long) nexus_info->region.x,
-      (long) nexus_info->region.y);
+    (void) LogMagickEvent(CacheEvent,GetMagickModule(),
+      "%s[%.20gx%.20g%+.20gx%+.20g]",cache_info->filename,(double)
+      nexus_info->region.width,(double) nexus_info->region.height,(double)
+      nexus_info->region.x,(double) nexus_info->region.y);
   return(MagickTrue);
 }
diff --git a/magick/deprecate.c b/magick/deprecate.c
index 4f744fd..1f5cfd5 100644
--- a/magick/deprecate.c
+++ b/magick/deprecate.c
@@ -1489,7 +1489,7 @@
   char
     key[MaxTextExtent];
 
-  (void) FormatMagickString(key,MaxTextExtent,"%ld\n",(long) id);
+  (void) FormatMagickString(key,MaxTextExtent,"%.20g\n",(double) id);
   return(DeleteImageRegistry(key));
 }
 
@@ -2638,7 +2638,7 @@
 
   *type=UndefinedRegistryType;
   *length=0;
-  (void) FormatMagickString(key,MaxTextExtent,"%ld\n",(long) id);
+  (void) FormatMagickString(key,MaxTextExtent,"%.20g\n",(double) id);
   blob=(void *) GetImageRegistry(ImageRegistryType,key,exception);
   if (blob != (void *) NULL)
     return(blob);
@@ -5987,7 +5987,7 @@
   static ssize_t
     id = 0;
 
-  (void) FormatMagickString(key,MaxTextExtent,"%ld\n",(long) id);
+  (void) FormatMagickString(key,MaxTextExtent,"%.20g\n",(double) id);
   status=SetImageRegistry(type,key,blob,exception);
   if (status == MagickFalse)
     return(-1);
diff --git a/magick/display.c b/magick/display.c
index 96d2fae..7a5df61 100644
--- a/magick/display.c
+++ b/magick/display.c
@@ -3080,9 +3080,9 @@
         */
         if (windows->info.mapped == MagickFalse)
           (void) XMapWindow(display,windows->info.id);
-        (void) FormatMagickString(text,MaxTextExtent," %lux%lu%+ld%+ld",
-          (unsigned long) chop_info.width,(unsigned long) chop_info.height,
-          (long) chop_info.x,(long) chop_info.y);
+        (void) FormatMagickString(text,MaxTextExtent,
+          " %.20gx%.20g%+.20gx%+.20g",(double) chop_info.width,(double)
+          chop_info.height,(double) chop_info.x,(double) chop_info.y);
         XInfoWidget(display,windows,text);
         XHighlightLine(display,windows->image.id,
           windows->image.highlight_context,&segment_info);
@@ -4370,9 +4370,8 @@
   height=(unsigned int) windows->image.window_changes.height;
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(X11Event,GetMagickModule(),
-      "Configure Image: %dx%d=>%lux%lu",windows->image.ximage->width,
-      windows->image.ximage->height,(unsigned long) width,
-      (unsigned long) height);
+      "Configure Image: %dx%d=>%.20gx%.20g",windows->image.ximage->width,
+      windows->image.ximage->height,(double) width,(double) height);
   if ((width*height) == 0)
     return(MagickTrue);
   x=0;
@@ -4826,9 +4825,9 @@
           */
           if (windows->info.mapped == MagickFalse)
             (void) XMapWindow(display,windows->info.id);
-          (void) FormatMagickString(text,MaxTextExtent," %lux%lu%+ld%+ld",
-            (unsigned long) crop_info.width,(unsigned long) crop_info.height,
-            (long) crop_info.x,(long) crop_info.y);
+          (void) FormatMagickString(text,MaxTextExtent,
+            " %.20gx%.20g%+.20gx%+.20g",(double) crop_info.width,(double)
+            crop_info.height,(double) crop_info.x,(double) crop_info.y);
           XInfoWidget(display,windows,text);
           XHighlightRectangle(display,windows->image.id,
             windows->image.highlight_context,&highlight_info);
@@ -4919,9 +4918,9 @@
           /*
             Display pointer position.
           */
-          (void) FormatMagickString(text,MaxTextExtent," %lux%lu%+ld%+ld",
-            (unsigned long) crop_info.width,(unsigned long) crop_info.height,
-            (long) crop_info.x,(long) crop_info.y);
+          (void) FormatMagickString(text,MaxTextExtent,
+            " %.20gx%.20g%+.20gx%+.20g",(double) crop_info.width,(double)
+            crop_info.height,(double) crop_info.x,(double) crop_info.y);
           XInfoWidget(display,windows,text);
         }
       highlight_info=crop_info;
@@ -5203,9 +5202,9 @@
           /*
             Set primary selection.
           */
-          (void) FormatMagickString(text,MaxTextExtent,"%lux%lu%+ld%+ld",
-            (unsigned long) crop_info.width,(unsigned long) crop_info.height,
-            (long) crop_info.x,(long) crop_info.y);
+          (void) FormatMagickString(text,MaxTextExtent,
+            "%.20gx%.20g%+.20gx%+.20g",(double) crop_info.width,(double)
+            crop_info.height,(double) crop_info.x,(double) crop_info.y);
           request=(&(event.xselectionrequest));
           (void) XChangeProperty(request->display,request->requestor,
             request->property,request->target,8,PropModeReplace,
@@ -5908,10 +5907,10 @@
               /*
                 Display info and draw drawing rectangle.
               */
-              (void) FormatMagickString(text,MaxTextExtent," %lux%lu%+ld%+ld",
-                (unsigned long) rectangle_info.width,(unsigned long)
-                rectangle_info.height,(long) rectangle_info.x,
-                (long) rectangle_info.y);
+              (void) FormatMagickString(text,MaxTextExtent,
+                " %.20gx%.20g%+.20gx%+.20g",(double) rectangle_info.width,
+                (double) rectangle_info.height,(double) rectangle_info.x,
+                (double) rectangle_info.y);
               XInfoWidget(display,windows,text);
               XHighlightRectangle(display,windows->image.id,
                 windows->image.highlight_context,&rectangle_info);
@@ -5932,10 +5931,10 @@
               /*
                 Display info and draw drawing rectangle.
               */
-              (void) FormatMagickString(text,MaxTextExtent," %lux%lu%+ld%+ld",
-                (unsigned long) rectangle_info.width,(unsigned long)
-                rectangle_info.height,(long) rectangle_info.x,(long)
-                rectangle_info.y);
+              (void) FormatMagickString(text,MaxTextExtent,
+                " %.20gx%.20g%+.20gx%+.20g",(double) rectangle_info.width,
+                (double) rectangle_info.height,(double) rectangle_info.x,
+                (double) rectangle_info.y);
               XInfoWidget(display,windows,text);
               XHighlightEllipse(display,windows->image.id,
                 windows->image.highlight_context,&rectangle_info);
@@ -7306,8 +7305,8 @@
       height=(size_t) windows->image.ximage->height;
       x=0;
       y=0;
-      (void) FormatMagickString(geometry,MaxTextExtent,"%lux%lu+0+0",
-        (unsigned long) width,(unsigned long) height);
+      (void) FormatMagickString(geometry,MaxTextExtent,"%.20gx%.20g+0+0",
+        (double) width,(double) height);
       status=XDialogWidget(display,windows,"Resize",
         "Enter resize geometry (e.g. 640x480, 200%):",geometry);
       if (*geometry == '\0')
@@ -11322,9 +11321,9 @@
           */
           if (windows->info.mapped == MagickFalse)
             (void) XMapWindow(display,windows->info.id);
-          (void) FormatMagickString(text,MaxTextExtent," %lux%lu%+ld%+ld",
-            (unsigned long) roi_info.width,(unsigned long) roi_info.height,
-            (long) roi_info.x,(long) roi_info.y);
+          (void) FormatMagickString(text,MaxTextExtent,
+            " %.20gx%.20g%+.20gx%+.20g",(double) roi_info.width,(double)
+            roi_info.height,(double) roi_info.x,(double) roi_info.y);
           XInfoWidget(display,windows,text);
           XHighlightRectangle(display,windows->image.id,
             windows->image.highlight_context,&highlight_info);
@@ -11418,9 +11417,9 @@
           /*
             Display pointer position.
           */
-          (void) FormatMagickString(text,MaxTextExtent," %lux%lu%+ld%+ld",
-            (unsigned long) roi_info.width,(unsigned long) roi_info.height,
-            (long) roi_info.x,(long) roi_info.y);
+          (void) FormatMagickString(text,MaxTextExtent,
+            " %.20gx%.20g%+.20gx%+.20g",(double) roi_info.width,(double)
+            roi_info.height,(double) roi_info.x,(double) roi_info.y);
           XInfoWidget(display,windows,text);
         }
       highlight_info=roi_info;
@@ -11758,9 +11757,9 @@
           /*
             Set primary selection.
           */
-          (void) FormatMagickString(text,MaxTextExtent,"%lux%lu%+ld%+ld",
-            (unsigned long) roi_info.width,(unsigned long) roi_info.height,
-            (long) roi_info.x,(long) roi_info.y);
+          (void) FormatMagickString(text,MaxTextExtent,
+            "%.20gx%.20g%+.20gx%+.20g",(double) roi_info.width,(double)
+            roi_info.height,(double) roi_info.x,(double) roi_info.y);
           request=(&(event.xselectionrequest));
           (void) XChangeProperty(request->display,request->requestor,
             request->property,request->target,8,PropModeReplace,
@@ -12403,7 +12402,7 @@
       /*
         Request JPEG quality from user.
       */
-      (void) FormatMagickString(quality,MaxTextExtent,"%lu",(unsigned long)
+      (void) FormatMagickString(quality,MaxTextExtent,"%.20g",(double)
         image->quality);
       status=XDialogWidget(display,windows,"Save","Enter JPEG quality:",
         quality);
@@ -12780,10 +12779,9 @@
       /*
         Display info on cropping rectangle.
       */
-      (void) FormatMagickString(text,MaxTextExtent," %lux%lu%+ld%+ld",
-        (unsigned long) crop_info->width,(unsigned long) crop_info->height,
-        (long) crop_info->x,
-        (long) crop_info->y);
+      (void) FormatMagickString(text,MaxTextExtent," %.20gx%.20g%+.20gx%+.20g",
+        (double) crop_info->width,(double) crop_info->height,(double)
+        crop_info->x,(double) crop_info->y);
       XInfoWidget(display,windows,text);
     }
   /*
@@ -13735,11 +13733,11 @@
   if (image->debug != MagickFalse)
     {
       (void) LogMagickEvent(X11Event,GetMagickModule(),
-        "Image: %s[%lu] %lux%lu ",image->filename,(unsigned long) image->scene,
-        (unsigned long) image->columns,(unsigned long) image->rows);
+        "Image: %s[%.20g] %.20gx%.20g ",image->filename,(double) image->scene,
+        (double) image->columns,(double) image->rows);
       if (image->colors != 0)
-        (void) LogMagickEvent(X11Event,GetMagickModule(),"%luc ",
-          (unsigned long) image->colors);
+        (void) LogMagickEvent(X11Event,GetMagickModule(),"%.20gc ",(double)
+          image->colors);
       (void) LogMagickEvent(X11Event,GetMagickModule(),"%s",image->magick);
     }
   /*
@@ -14383,12 +14381,12 @@
   if (display_image->debug != MagickFalse)
     {
       (void) LogMagickEvent(X11Event,GetMagickModule(),
-        "Image: %s[%lu] %lux%lu ",display_image->filename,
-        (unsigned long) display_image->scene,(unsigned long)
-        display_image->columns,(unsigned long) display_image->rows);
+        "Image: %s[%.20g] %.20gx%.20g ",display_image->filename,
+        (double) display_image->scene,(double) display_image->columns,
+        (double) display_image->rows);
       if (display_image->colors != 0)
-        (void) LogMagickEvent(X11Event,GetMagickModule(),"%luc ",
-          (unsigned long) display_image->colors);
+        (void) LogMagickEvent(X11Event,GetMagickModule(),"%.20gc ",(double)
+          display_image->colors);
       (void) LogMagickEvent(X11Event,GetMagickModule(),"%s",
         display_image->magick);
     }
@@ -14509,9 +14507,8 @@
           "%s: %s",MagickPackageName,filename);
       else
         (void) FormatMagickString(windows->image.name,MaxTextExtent,
-          "%s: %s[%lu of %lu]",MagickPackageName,filename,(unsigned long)
-          display_image->scene,(unsigned long)
-          GetImageListLength(display_image));
+          "%s: %s[%.20g of %.20g]",MagickPackageName,filename,(double)
+          display_image->scene,(double) GetImageListLength(display_image));
       (void) CopyMagickString(windows->image.icon_name,filename,MaxTextExtent);
     }
   if (resource_info->immutable)
diff --git a/magick/distort.c b/magick/distort.c
index 7ee5f79..5b3b7d2 100644
--- a/magick/distort.c
+++ b/magick/distort.c
@@ -385,8 +385,8 @@
       }
       if ( number_arguments < 1+i*cp_size ) {
         (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
-               "InvalidArgument", "%s : 'require at least %ld CPs'",
-               "Polynomial", (long) i);
+               "InvalidArgument", "%s : 'require at least %.20g CPs'",
+               "Polynomial", (double) i);
         return((double *) NULL);
       }
       break;
@@ -463,8 +463,8 @@
       if ( number_arguments%cp_size != 0 ||
            number_arguments < cp_size ) {
         (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
-               "InvalidArgument", "%s : 'require at least %ld CPs'",
-               "Affine", 1L);
+               "InvalidArgument", "%s : 'require at least %.20g CPs'",
+               "Affine", 1.0);
         coeff=(double *) RelinquishMagickMemory(coeff);
         return((double *) NULL);
       }
@@ -740,8 +740,8 @@
       if ( number_arguments%cp_size != 0 ||
            number_arguments < cp_size*4 ) {
         (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
-              "InvalidArgument", "%s : 'require at least %ld CPs'",
-              MagickOptionToMnemonic(MagickDistortOptions, *method), 4L);
+              "InvalidArgument", "%s : 'require at least %.20g CPs'",
+              MagickOptionToMnemonic(MagickDistortOptions, *method), 4.0);
         coeff=(double *) RelinquishMagickMemory(coeff);
         return((double *) NULL);
       }
@@ -856,8 +856,8 @@
       if ( number_arguments%cp_size != 0 ||
            number_arguments < cp_size*4 ) {
         (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
-              "InvalidArgument", "%s : 'require at least %ld CPs'",
-              MagickOptionToMnemonic(MagickDistortOptions, *method), 4L);
+              "InvalidArgument", "%s : 'require at least %.20g CPs'",
+              MagickOptionToMnemonic(MagickDistortOptions, *method), 4.0);
         coeff=(double *) RelinquishMagickMemory(coeff);
         return((double *) NULL);
       }
@@ -1298,8 +1298,8 @@
       if ( number_arguments%cp_size != 0 ||
            number_arguments < cp_size ) {
         (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
-              "InvalidArgument", "%s : 'require at least %ld CPs'",
-              MagickOptionToMnemonic(MagickDistortOptions, *method), 1L);
+              "InvalidArgument", "%s : 'require at least %.20g CPs'",
+              MagickOptionToMnemonic(MagickDistortOptions, *method), 1.0);
         coeff=(double *) RelinquishMagickMemory(coeff);
         return((double *) NULL);
       }
@@ -1650,9 +1650,9 @@
 
     /* Set destination image size and virtual offset */
     if ( bestfit || viewport_given ) {
-      (void) FormatMagickString(image_gen, MaxTextExtent,"  -size %lux%lu "
-        "-page %+ld%+ld xc: +insert \\\n",(unsigned long) geometry.width,
-        (unsigned long) geometry.height,(long) geometry.x,(long) geometry.y);
+      (void) FormatMagickString(image_gen, MaxTextExtent,"  -size %.20gx%.20g "
+        "-page %+.20gx%+.20g xc: +insert \\\n",(double) geometry.width,
+        (double) geometry.height,(double) geometry.x,(double) geometry.y);
       lookup="v.p{ xx-v.page.x-.5, yy-v.page.x-.5 }";
     }
     else {
@@ -1811,7 +1811,7 @@
       {
         fprintf(stderr, "Arc Distort, Internal Coefficients:\n");
         for ( i=0; i<5; i++ )
-          fprintf(stderr, "  c%ld = %+lf\n", (long) i, coeff[i]);
+          fprintf(stderr, "  c%.20g = %+lf\n", (double) i, coeff[i]);
         fprintf(stderr, "Arc Distort, FX Equivelent:\n");
         fprintf(stderr, "%s", image_gen);
         fprintf(stderr, "  -fx 'ii=i+page.x; jj=j+page.y;\n");
@@ -1829,7 +1829,7 @@
       {
         fprintf(stderr, "Polar Distort, Internal Coefficents\n");
         for ( i=0; i<8; i++ )
-          fprintf(stderr, "  c%ld = %+lf\n", (long) i, coeff[i]);
+          fprintf(stderr, "  c%.20g = %+lf\n", (double) i, coeff[i]);
         fprintf(stderr, "Polar Distort, FX Equivelent:\n");
         fprintf(stderr, "%s", image_gen);
         fprintf(stderr, "  -fx 'ii=i+page.x%+lf; jj=j+page.y%+lf;\n",
@@ -1848,7 +1848,7 @@
       {
         fprintf(stderr, "DePolar Distort, Internal Coefficents\n");
         for ( i=0; i<8; i++ )
-          fprintf(stderr, "  c%ld = %+lf\n", (long) i, coeff[i]);
+          fprintf(stderr, "  c%.20g = %+lf\n", (double) i, coeff[i]);
         fprintf(stderr, "DePolar Distort, FX Equivelent:\n");
         fprintf(stderr, "%s", image_gen);
         fprintf(stderr, "  -fx 'aa=(i+.5)*%lf %+lf;\n", coeff[6], -coeff[4] );
diff --git a/magick/draw.c b/magick/draw.c
index 3e69e7d..26fd3ef 100644
--- a/magick/draw.c
+++ b/magick/draw.c
@@ -416,8 +416,8 @@
   p=polygon_info->edges;
   for (i=0; i < (ssize_t) polygon_info->number_edges; i++)
   {
-    (void) LogMagickEvent(DrawEvent,GetMagickModule(),"      edge %lu:",
-     (unsigned long) i);
+    (void) LogMagickEvent(DrawEvent,GetMagickModule(),"      edge %.20g:",
+      (double) i);
     (void) LogMagickEvent(DrawEvent,GetMagickModule(),"      direction: %s",
       p->direction != MagickFalse ? "down" : "up");
     (void) LogMagickEvent(DrawEvent,GetMagickModule(),"      ghostline: %s",
@@ -2422,9 +2422,8 @@
                 (void) SetImageArtifact(image,key,token);
                 (void) FormatMagickString(key,MaxTextExtent,"%s-geometry",name);
                 (void) FormatMagickString(geometry,MaxTextExtent,
-                  "%lux%lu%+ld%+ld",(unsigned long) bounds.width,
-                  (unsigned long) bounds.height,(long) bounds.x,
-                  (long) bounds.y);
+                  "%.20gx%.20g%+.20gx%+.20g",(double) bounds.width,(double)
+                  bounds.height,(double) bounds.x,(double) bounds.y);
                 (void) SetImageArtifact(image,key,geometry);
                 GetMagickToken(q,&q,token);
                 break;
@@ -4060,34 +4059,34 @@
     case PointPrimitive:
     {
       (void) LogMagickEvent(DrawEvent,GetMagickModule(),
-        "PointPrimitive %ld,%ld %s",(long) x,(long) y,
+        "PointPrimitive %.20g,%.20g %s",(double) x,(double) y,
         methods[primitive_info->method]);
       return;
     }
     case ColorPrimitive:
     {
       (void) LogMagickEvent(DrawEvent,GetMagickModule(),
-        "ColorPrimitive %ld,%ld %s",(long) x,(long) y,
+        "ColorPrimitive %.20g,%.20g %s",(double) x,(double) y,
         methods[primitive_info->method]);
       return;
     }
     case MattePrimitive:
     {
       (void) LogMagickEvent(DrawEvent,GetMagickModule(),
-        "MattePrimitive %ld,%ld %s",(long) x,(long) y,
+        "MattePrimitive %.20g,%.20g %s",(double) x,(double) y,
         methods[primitive_info->method]);
       return;
     }
     case TextPrimitive:
     {
       (void) LogMagickEvent(DrawEvent,GetMagickModule(),
-        "TextPrimitive %ld,%ld",(long) x,(long) y);
+        "TextPrimitive %.20g,%.20g",(double) x,(double) y);
       return;
     }
     case ImagePrimitive:
     {
       (void) LogMagickEvent(DrawEvent,GetMagickModule(),
-        "ImagePrimitive %ld,%ld",(long) x,(long) y);
+        "ImagePrimitive %.20g,%.20g",(double) x,(double) y);
       return;
     }
     default:
@@ -4104,28 +4103,28 @@
       {
         coordinates=(ssize_t) primitive_info[i].coordinates;
         (void) LogMagickEvent(DrawEvent,GetMagickModule(),
-          "    begin open (%ld)",(long) coordinates);
+          "    begin open (%.20g)",(double) coordinates);
         p=point;
       }
     point=primitive_info[i].point;
     if ((fabs(q.x-point.x) > MagickEpsilon) ||
         (fabs(q.y-point.y) > MagickEpsilon))
       (void) LogMagickEvent(DrawEvent,GetMagickModule(),
-        "      %ld: %.18g,%.18g",(long) coordinates,point.x,point.y);
+        "      %.20g: %.18g,%.18g",(double) coordinates,point.x,point.y);
     else
       (void) LogMagickEvent(DrawEvent,GetMagickModule(),
-        "      %ld: %g,%g (duplicate)",(long) coordinates,point.x,point.y);
+        "      %.20g: %g,%g (duplicate)",(double) coordinates,point.x,point.y);
     q=point;
     coordinates--;
     if (coordinates > 0)
       continue;
     if ((fabs(p.x-point.x) > MagickEpsilon) ||
         (fabs(p.y-point.y) > MagickEpsilon))
-      (void) LogMagickEvent(DrawEvent,GetMagickModule(),"    end last (%ld)",
-        (long) coordinates);
+      (void) LogMagickEvent(DrawEvent,GetMagickModule(),"    end last (%.20g)",
+        (double) coordinates);
     else
-      (void) LogMagickEvent(DrawEvent,GetMagickModule(),"    end open (%ld)",
-        (long) coordinates);
+      (void) LogMagickEvent(DrawEvent,GetMagickModule(),"    end open (%.20g)",
+        (double) coordinates);
   }
 }
 
@@ -4482,9 +4481,8 @@
       geometry.x=x;
       geometry.y=y;
       (void) FormatMagickString(composite_geometry,MaxTextExtent,
-        "%lux%lu%+ld%+ld",(unsigned long) composite_image->columns,
-        (unsigned long) composite_image->rows,(long) geometry.x,(long)
-        geometry.y);
+        "%.20gx%.20g%+.20gx%+.20g",(double) composite_image->columns,(double)
+        composite_image->rows,(double) geometry.x,(double) geometry.y);
       (void) ParseGravityGeometry(image,composite_geometry,&geometry,
         &image->exception);
       affine=draw_info->affine;
diff --git a/magick/effect.c b/magick/effect.c
index 67a8b90..56d86d7 100644
--- a/magick/effect.c
+++ b/magick/effect.c
@@ -878,13 +878,13 @@
         *k;
 
       (void) LogMagickEvent(TransformEvent,GetMagickModule(),
-        "  BlurImage with %lu kernel:",(unsigned long) width);
+        "  BlurImage with %.20g kernel:",(double) width);
       message=AcquireString("");
       k=kernel;
       for (i=0; i < (ssize_t) width; i++)
       {
         *message='\0';
-        (void) FormatMagickString(format,MaxTextExtent,"%ld: ",(long) i);
+        (void) FormatMagickString(format,MaxTextExtent,"%.20g: ",(double) i);
         (void) ConcatenateString(&message,format);
         (void) FormatMagickString(format,MaxTextExtent,"%g ",*k++);
         (void) ConcatenateString(&message,format);
@@ -1380,14 +1380,14 @@
         *k;
 
       (void) LogMagickEvent(TransformEvent,GetMagickModule(),
-        "  ConvolveImage with %lux%lu kernel:",(unsigned long) width,
-        (unsigned long) width);
+        "  ConvolveImage with %.20gx%.20g kernel:",(double) width,(double)
+        width);
       message=AcquireString("");
       k=kernel;
       for (v=0; v < (ssize_t) width; v++)
       {
         *message='\0';
-        (void) FormatMagickString(format,MaxTextExtent,"%ld: ",(long) v);
+        (void) FormatMagickString(format,MaxTextExtent,"%.20g: ",(double) v);
         (void) ConcatenateString(&message,format);
         for (u=0; u < (ssize_t) width; u++)
         {
@@ -2226,14 +2226,14 @@
         *k;
 
       (void) LogMagickEvent(TransformEvent,GetMagickModule(),
-        "  FilterImage with %ldx%ld kernel:",(unsigned long) kernel->width,
-        (unsigned long) kernel->height);
+        "  FilterImage with %.20gx%.20g kernel:",(double) kernel->width,(double)
+        kernel->height);
       message=AcquireString("");
       k=kernel->values;
       for (v=0; v < (ssize_t) kernel->height; v++)
       {
         *message='\0';
-        (void) FormatMagickString(format,MaxTextExtent,"%ld: ",(long) v);
+        (void) FormatMagickString(format,MaxTextExtent,"%.20g: ",(double) v);
         (void) ConcatenateString(&message,format);
         for (u=0; u < (ssize_t) kernel->width; u++)
         {
@@ -3471,8 +3471,8 @@
         x=(ssize_t) ((i+1)*thumbnail->columns)/NumberTiles;
         y=(ssize_t) ((i+1)*thumbnail->rows)/NumberTiles;
         preview_image=RollImage(thumbnail,x,y,exception);
-        (void) FormatMagickString(label,MaxTextExtent,"roll %ldx%ld",(long) x,
-          (long) y);
+        (void) FormatMagickString(label,MaxTextExtent,"roll %+.20gx%+.20g",
+          (double) x,(double) y);
         break;
       }
       case HuePreview:
@@ -3524,8 +3524,8 @@
         if (preview_image != (Image *) NULL)
           for (x=0; x < i; x++)
             (void) ContrastImage(preview_image,MagickTrue);
-        (void) FormatMagickString(label,MaxTextExtent,"contrast (%ld)",(long)
-          i+1);
+        (void) FormatMagickString(label,MaxTextExtent,"contrast (%.20g)",
+          (double) i+1);
         break;
       }
       case DullPreview:
@@ -3535,8 +3535,8 @@
           break;
         for (x=0; x < i; x++)
           (void) ContrastImage(preview_image,MagickFalse);
-        (void) FormatMagickString(label,MaxTextExtent,"+contrast (%ld)",
-          (long) i+1);
+        (void) FormatMagickString(label,MaxTextExtent,"+contrast (%.20g)",
+          (double) i+1);
         break;
       }
       case GrayscalePreview:
@@ -3549,7 +3549,7 @@
         quantize_info.colorspace=GRAYColorspace;
         (void) QuantizeImage(&quantize_info,preview_image);
         (void) FormatMagickString(label,MaxTextExtent,
-          "-colorspace gray -colors %lu",(unsigned long) colors);
+          "-colorspace gray -colors %.20g",(double) colors);
         break;
       }
       case QuantizePreview:
@@ -3560,8 +3560,8 @@
         colors<<=1;
         quantize_info.number_colors=colors;
         (void) QuantizeImage(&quantize_info,preview_image);
-        (void) FormatMagickString(label,MaxTextExtent,"colors %lu",
-          (unsigned long) colors);
+        (void) FormatMagickString(label,MaxTextExtent,"colors %.20g",(double)
+          colors);
         break;
       }
       case DespecklePreview:
@@ -3577,8 +3577,8 @@
         preview_image=DespeckleImage(thumbnail,exception);
         if (preview_image == (Image *) NULL)
           break;
-        (void) FormatMagickString(label,MaxTextExtent,"despeckle (%ld)",(long)
-          i+1);
+        (void) FormatMagickString(label,MaxTextExtent,"despeckle (%.20g)",
+          (double) i+1);
         break;
       }
       case ReduceNoisePreview:
@@ -3699,9 +3699,9 @@
         geometry.x=i/2;
         geometry.y=i/2;
         (void) RaiseImage(preview_image,&geometry,MagickTrue);
-        (void) FormatMagickString(label,MaxTextExtent,"raise %lux%lu%+ld%+ld",
-          (unsigned long) geometry.width,(unsigned long) geometry.height,
-          (long) geometry.x,(long) geometry.y);
+        (void) FormatMagickString(label,MaxTextExtent,
+          "raise %.20gx%.20g%+.20gx%+.20g",(double) geometry.width,(double)
+          geometry.height,(double) geometry.x,(double) geometry.y);
         break;
       }
       case SegmentPreview:
@@ -3767,8 +3767,8 @@
         if (preview_image == (Image *) NULL)
           break;
         preview_info->quality=(size_t) percentage;
-        (void) FormatMagickString(factor,MaxTextExtent,"%lu",
-          (unsigned long) preview_info->quality);
+        (void) FormatMagickString(factor,MaxTextExtent,"%.20g",(double)
+          preview_info->quality);
         file=AcquireUniqueFileResource(filename);
         if (file != -1)
           file=close(file)-1;
@@ -3800,8 +3800,8 @@
               "quality %s\n%gkb ",factor,(double) ((MagickOffsetType)
               GetBlobSize(preview_image))/1024.0);
           else
-            (void) FormatMagickString(label,MaxTextExtent,"quality %s\n%lub ",
-              factor,(unsigned long) GetBlobSize(thumbnail));
+            (void) FormatMagickString(label,MaxTextExtent,"quality %s\n%.20gb ",
+              factor,(double) GetBlobSize(thumbnail));
         break;
       }
     }
@@ -4516,14 +4516,14 @@
         *k;
 
       (void) LogMagickEvent(TransformEvent,GetMagickModule(),
-        "  SelectiveBlurImage with %lux%lu kernel:",(unsigned long) width,
-        (unsigned long) width);
+        "  SelectiveBlurImage with %.20gx%.20g kernel:",(double) width,(double)
+        width);
       message=AcquireString("");
       k=kernel;
       for (v=0; v < (ssize_t) width; v++)
       {
         *message='\0';
-        (void) FormatMagickString(format,MaxTextExtent,"%ld: ",(long) v);
+        (void) FormatMagickString(format,MaxTextExtent,"%.20g: ",(double) v);
         (void) ConcatenateString(&message,format);
         for (u=0; u < (ssize_t) width; u++)
         {
diff --git a/magick/exception.c b/magick/exception.c
index 18e09a3..4ed1857 100644
--- a/magick/exception.c
+++ b/magick/exception.c
@@ -981,8 +981,8 @@
     type="error";
   if (severity >= FatalErrorException)
     type="fatal";
-  (void) FormatMagickString(message,MaxTextExtent,"%s @ %s/%s/%s/%lu",reason,
-    type,path,function,(unsigned long) line);
+  (void) FormatMagickString(message,MaxTextExtent,"%s @ %s/%s/%s/%.20g",reason,
+    type,path,function,(double) line);
   (void) ThrowException(exception,severity,message,(char *) NULL);
   return(status);
 }
diff --git a/magick/fx.c b/magick/fx.c
index fa64cf1..4d0b33b 100644
--- a/magick/fx.c
+++ b/magick/fx.c
@@ -919,7 +919,7 @@
       for (v=0; v < 6; v++)
       {
         *message='\0';
-        (void) FormatMagickString(format,MaxTextExtent,"%ld: ",(long) v);
+        (void) FormatMagickString(format,MaxTextExtent,"%.20g: ",(double) v);
         (void) ConcatenateString(&message,format);
         for (u=0; u < 6; u++)
         {
@@ -1153,8 +1153,8 @@
       case 'k': channel=BlackChannel; break;
       default: break;
     }
-  (void) FormatMagickString(key,MaxTextExtent,"%p.%ld.%s",(void *) image,
-    (long) channel,symbol);
+  (void) FormatMagickString(key,MaxTextExtent,"%p.%.20g.%s",(void *) image,
+    (double) channel,symbol);
   value=(const char *) GetValueFromSplayTree(fx_info->symbols,key);
   if (value != (const char *) NULL)
     return(QuantumScale*StringToDouble(value));
@@ -1165,8 +1165,8 @@
         depth;
 
       depth=GetImageChannelDepth(image,channel,exception);
-      (void) FormatMagickString(statistic,MaxTextExtent,"%lu",
-        (unsigned long) depth);
+      (void) FormatMagickString(statistic,MaxTextExtent,"%.20g",(double)
+        depth);
     }
   if (LocaleNCompare(symbol,"kurtosis",8) == 0)
     {
@@ -2419,9 +2419,9 @@
           if (strlen(subexpression) > 1)
             subexpression[strlen(subexpression)-1]='\0';
           if (fx_info->file != (FILE *) NULL)
-            (void) fprintf(fx_info->file,"%s[%ld,%ld].%s: %s=%.*g\n",
-              fx_info->images->filename,(long) x,(long) y,type,subexpression,
-              GetMagickPrecision(),(double) alpha);
+            (void) fprintf(fx_info->file,"%s[%.20g,%.20g].%s: %s=%.*g\n",
+              fx_info->images->filename,(double) x,(double) y,type,
+              subexpression,GetMagickPrecision(),(double) alpha);
           return(0.0);
         }
       break;
diff --git a/magick/identify.c b/magick/identify.c
index e8ef826..5b4f8e3 100644
--- a/magick/identify.c
+++ b/magick/identify.c
@@ -321,22 +321,21 @@
            (image->scene == 0))
         (void) fprintf(file,"%s ",image->filename);
       else
-        (void) fprintf(file,"%s[%lu] ",image->filename,(unsigned long)
-          image->scene);
+        (void) fprintf(file,"%s[%.20g] ",image->filename,(double) image->scene);
       (void) fprintf(file,"%s ",image->magick);
       if ((image->magick_columns != 0) || (image->magick_rows != 0))
         if ((image->magick_columns != image->columns) ||
             (image->magick_rows != image->rows))
-          (void) fprintf(file,"%lux%lu=>",(unsigned long) image->magick_columns,
-            (unsigned long) image->magick_rows);
-      (void) fprintf(file,"%lux%lu ",(unsigned long) image->columns,
-        (unsigned long) image->rows);
+          (void) fprintf(file,"%.20gx%.20g=>",(double) image->magick_columns,
+            (double) image->magick_rows);
+      (void) fprintf(file,"%.20gx%.20g ",(double) image->columns,(double)
+        image->rows);
       if ((image->page.width != 0) || (image->page.height != 0) ||
           (image->page.x != 0) || (image->page.y != 0))
-        (void) fprintf(file,"%lux%lu%+ld%+ld ",(unsigned long)
-          image->page.width,(unsigned long) image->page.height,(long)
-          image->page.x,(long) image->page.y);
-      (void) fprintf(file,"%lu-bit ",(unsigned long) image->depth);
+        (void) fprintf(file,"%.20gx%.20g%+.20gx%+.20g ",(double)
+          image->page.width,(double) image->page.height,(double) image->page.x,
+          (double) image->page.y);
+      (void) fprintf(file,"%.20g-bit ",(double) image->depth);
       if (image->type != UndefinedType)
         (void) fprintf(file,"%s ",MagickOptionToMnemonic(MagickTypeOptions,
           (ssize_t) image->type));
@@ -351,13 +350,12 @@
         }
       else
         if (image->total_colors <= image->colors)
-          (void) fprintf(file,"PseudoClass %luc ",(unsigned long)
-            image->colors);
+          (void) fprintf(file,"PseudoClass %.20gc ",(double) image->colors);
         else
-          (void) fprintf(file,"PseudoClass %lu=>%luc ",(unsigned long)
-            image->total_colors,(unsigned long) image->colors);
+          (void) fprintf(file,"PseudoClass %.20g=>%.20gc ",(double)
+            image->total_colors,(double) image->colors);
       if (image->error.mean_error_per_pixel != 0.0)
-        (void) fprintf(file,"%ld/%f/%fdb ",(long)
+        (void) fprintf(file,"%.20g/%f/%fdb ",(double)
           (image->error.mean_error_per_pixel+0.5),
           image->error.normalized_mean_error,
           image->error.normalized_maximum_error);
@@ -366,9 +364,9 @@
           (void) FormatMagickSize(GetBlobSize(image),MagickFalse,format);
           (void) fprintf(file,"%sB ",format);
         }
-      (void) fprintf(file,"%0.3fu %ld:%02ld.%03ld",user_time,(long)
-        (elapsed_time/60.0),(long) floor(fmod(elapsed_time,60.0)),
-        (long) (1000.0*(elapsed_time-floor(elapsed_time))));
+      (void) fprintf(file,"%0.3fu %.20g:%02g.%03g",user_time,(double)
+        (elapsed_time/60.0),floor(fmod(elapsed_time,60.0)),
+        (double) (1000.0*(elapsed_time-floor(elapsed_time))));
       (void) fprintf(file,"\n");
       (void) fflush(file);
       return(ferror(file) != 0 ? MagickFalse : MagickTrue);
@@ -401,14 +399,14 @@
       GetMagickDescription(magick_info));
   (void) fprintf(file,"  Class: %s\n",MagickOptionToMnemonic(MagickClassOptions,
     (ssize_t) image->storage_class));
-  (void) fprintf(file,"  Geometry: %lux%lu%+ld%+ld\n",(unsigned long)
-    image->columns,(unsigned long) image->rows,(long) image->tile_offset.x,
-    (long) image->tile_offset.y);
+  (void) fprintf(file,"  Geometry: %.20gx%.20g%+.20gx%+.20g\n",(double)
+    image->columns,(double) image->rows,(double) image->tile_offset.x,(double)
+    image->tile_offset.y);
   if ((image->magick_columns != 0) || (image->magick_rows != 0))
     if ((image->magick_columns != image->columns) ||
         (image->magick_rows != image->rows))
-      (void) fprintf(file,"  Base geometry: %lux%lu\n",(unsigned long)
-        image->magick_columns,(unsigned long) image->magick_rows);
+      (void) fprintf(file,"  Base geometry: %.20gx%.20g\n",(double)
+        image->magick_columns,(double) image->magick_rows);
   if ((image->x_resolution != 0.0) && (image->y_resolution != 0.0))
     {
       (void) fprintf(file,"  Resolution: %gx%g\n",image->x_resolution,
@@ -448,10 +446,10 @@
         }
       depth=GetImageDepth(image,&image->exception);
       if (image->depth == depth)
-        (void) fprintf(file,"  Depth: %lu-bit\n",(unsigned long) image->depth);
+        (void) fprintf(file,"  Depth: %.20g-bit\n",(double) image->depth);
       else
-        (void) fprintf(file,"  Depth: %lu/%lu-bit\n",(unsigned long)
-          image->depth,(unsigned long) depth);
+        (void) fprintf(file,"  Depth: %.20g/%.20g-bit\n",(double)
+          image->depth,(double) depth);
       (void) fprintf(file,"  Channel depth:\n");
       if (IsGrayImage(image,&image->exception) != MagickFalse)
         colorspace=GRAYColorspace;
@@ -460,42 +458,36 @@
         case RGBColorspace:
         default:
         {
-          (void) fprintf(file,"    red: %lu-bit\n",
-            (unsigned long) channel_statistics[RedChannel].depth);
-          (void) fprintf(file,"    green: %lu-bit\n",
-            (unsigned long) channel_statistics[GreenChannel].depth);
-          (void) fprintf(file,"    blue: %lu-bit\n",
-            (unsigned long) channel_statistics[BlueChannel].depth);
-          if (image->matte != MagickFalse)
-            (void) fprintf(file,"    alpha: %lu-bit\n",
-              (unsigned long) channel_statistics[OpacityChannel].depth);
+          (void) fprintf(file,"    red: %.20g-bit\n",(double)
+            channel_statistics[RedChannel].depth);
+          (void) fprintf(file,"    green: %.20g-bit\n",(double)
+            channel_statistics[GreenChannel].depth);
+          (void) fprintf(file,"    blue: %.20g-bit\n",(double)
+            channel_statistics[BlueChannel].depth);
           break;
         }
         case CMYKColorspace:
         {
-          (void) fprintf(file,"    cyan: %lu-bit\n",
-            (unsigned long) channel_statistics[CyanChannel].depth);
-          (void) fprintf(file,"    magenta: %lu-bit\n",
-            (unsigned long) channel_statistics[MagentaChannel].depth);
-          (void) fprintf(file,"    yellow: %lu-bit\n",
-            (unsigned long) channel_statistics[YellowChannel].depth);
-          (void) fprintf(file,"    black: %lu-bit\n",
-            (unsigned long) channel_statistics[BlackChannel].depth);
-          if (image->matte != MagickFalse)
-            (void) fprintf(file,"    alpha: %lu-bit\n",
-              (unsigned long) channel_statistics[OpacityChannel].depth);
+          (void) fprintf(file,"    cyan: %.20g-bit\n",(double)
+            channel_statistics[CyanChannel].depth);
+          (void) fprintf(file,"    magenta: %.20g-bit\n",(double)
+            channel_statistics[MagentaChannel].depth);
+          (void) fprintf(file,"    yellow: %.20g-bit\n",(double)
+            channel_statistics[YellowChannel].depth);
+          (void) fprintf(file,"    black: %.20g-bit\n",(double)
+            channel_statistics[BlackChannel].depth);
           break;
         }
         case GRAYColorspace:
         {
-          (void) fprintf(file,"    gray: %lu-bit\n",
-            (unsigned long) channel_statistics[GrayChannel].depth);
-          if (image->matte != MagickFalse)
-            (void) fprintf(file,"    alpha: %lu-bit\n",
-              (unsigned long) channel_statistics[OpacityChannel].depth);
+          (void) fprintf(file,"    gray: %.20g-bit\n",(double)
+            channel_statistics[GrayChannel].depth);
           break;
         }
       }
+      if (image->matte != MagickFalse)
+        (void) fprintf(file,"    alpha: %.20g-bit\n",(double)
+          channel_statistics[OpacityChannel].depth);
       scale=1;
       if (image->depth <= MAGICKCORE_QUANTUM_DEPTH)
         scale=QuantumRange/((size_t) QuantumRange >> ((size_t)
@@ -635,7 +627,7 @@
       artifact=GetImageArtifact(image,"identify:unique-colors");
       if ((artifact != (const char *) NULL) &&
           (IsMagickTrue(artifact) != MagickFalse))
-        (void) fprintf(file,"  Colors: %lu\n",(unsigned long)
+        (void) fprintf(file,"  Colors: %.20g\n",(double)
           GetNumberColors(image,(FILE *) NULL,&image->exception));
       if (IsHistogramImage(image,&image->exception) != MagickFalse)
         {
@@ -645,7 +637,7 @@
     }
   if (image->storage_class == PseudoClass)
     {
-      (void) fprintf(file,"  Colormap: %lu\n",(unsigned long) image->colors);
+      (void) fprintf(file,"  Colormap: %.20g\n",(double) image->colors);
       if (image->colors <= 1024)
         {
           char
@@ -724,9 +716,9 @@
         image->chromaticity.white_point.x,image->chromaticity.white_point.y);
     }
   if ((image->extract_info.width*image->extract_info.height) != 0)
-    (void) fprintf(file,"  Tile geometry: %lux%lu%+ld%+ld\n",(unsigned long)
-      image->extract_info.width,(unsigned long) image->extract_info.height,
-      (long) image->extract_info.x,(long) image->extract_info.y);
+    (void) fprintf(file,"  Tile geometry: %.20gx%.20g%+.20gx%+.20g\n",(double)
+      image->extract_info.width,(double) image->extract_info.height,(double)
+      image->extract_info.x,(double) image->extract_info.y);
   (void) fprintf(file,"  Interlace: %s\n",MagickOptionToMnemonic(
     MagickInterlaceOptions,(ssize_t) image->interlace));
   (void) QueryColorname(image,&image->background_color,SVGCompliance,color,
@@ -745,30 +737,29 @@
     MagickComposeOptions,(ssize_t) image->compose));
   if ((image->page.width != 0) || (image->page.height != 0) ||
       (image->page.x != 0) || (image->page.y != 0))
-    (void) fprintf(file,"  Page geometry: %lux%lu%+ld%+ld\n",(unsigned long)
-      image->page.width,(unsigned long) image->page.height,(long)
-      image->page.x,(long) image->page.y);
+    (void) fprintf(file,"  Page geometry: %.20gx%.20g%+.20gx%+.20g\n",(double)
+      image->page.width,(double) image->page.height,(double)
+      image->page.x,(double) image->page.y);
   if ((image->page.x != 0) || (image->page.y != 0))
-    (void) fprintf(file,"  Origin geometry: %+ld%+ld\n",(long) image->page.x,
-      (long) image->page.y);
+    (void) fprintf(file,"  Origin geometry: %+.20gx%+.20g\n",(double)
+      image->page.x,(double) image->page.y);
   (void) fprintf(file,"  Dispose: %s\n",MagickOptionToMnemonic(
     MagickDisposeOptions,(ssize_t) image->dispose));
   if (image->delay != 0)
-    (void) fprintf(file,"  Delay: %lux%ld\n",(unsigned long) image->delay,
-      (long) image->ticks_per_second);
+    (void) fprintf(file,"  Delay: %.20gx%.20g\n",(double) image->delay,
+      (double) image->ticks_per_second);
   if (image->iterations != 1)
-    (void) fprintf(file,"  Iterations: %lu\n",(unsigned long)
-      image->iterations);
+    (void) fprintf(file,"  Iterations: %.20g\n",(double) image->iterations);
   if ((image->next != (Image *) NULL) || (image->previous != (Image *) NULL))
-    (void) fprintf(file,"  Scene: %lu of %lu\n",(unsigned long) image->scene,
-      (unsigned long) GetImageListLength(image));
+    (void) fprintf(file,"  Scene: %.20g of %.20g\n",(double) image->scene,
+      (double) GetImageListLength(image));
   else
     if (image->scene != 0)
-      (void) fprintf(file,"  Scene: %lu\n",(unsigned long) image->scene);
+      (void) fprintf(file,"  Scene: %.20g\n",(double) image->scene);
   (void) fprintf(file,"  Compression: %s\n",MagickOptionToMnemonic(
     MagickCompressOptions,(ssize_t) image->compression));
   if (image->quality != UndefinedCompressionQuality)
-    (void) fprintf(file,"  Quality: %lu\n",(unsigned long) image->quality);
+    (void) fprintf(file,"  Quality: %.20g\n",(double) image->quality);
   (void) fprintf(file,"  Orientation: %s\n",MagickOptionToMnemonic(
     MagickOrientationOptions,(ssize_t) image->orientation));
   if (image->montage != (char *) NULL)
@@ -810,8 +801,8 @@
             (void) fprintf(file,"\n");
             continue;
           }
-        (void) fprintf(file," %lux%lu %s\n",(unsigned long)
-          tile->magick_columns,(unsigned long) tile->magick_rows,tile->magick);
+        (void) fprintf(file," %.20gx%.20g %s\n",(double) tile->magick_columns,
+          (double) tile->magick_rows,tile->magick);
         (void) SignatureImage(tile);
         ResetImagePropertyIterator(tile);
         property=GetNextImageProperty(tile);
@@ -877,7 +868,7 @@
         profile=GetImageProfile(image,name);
         if (profile == (StringInfo *) NULL)
           continue;
-        (void) fprintf(file,"    Profile-%s: %lu bytes\n",name,(unsigned long)
+        (void) fprintf(file,"    Profile-%s: %.20g bytes\n",name,(double)
           GetStringInfoLength(profile));
 #if defined(MAGICKCORE_LCMS_DELEGATE)
         if ((LocaleCompare(name,"icc") == 0) ||
@@ -1004,7 +995,8 @@
                 case 219: tag="Custom Field 20"; break;
                 default: tag="unknown"; break;
               }
-              (void) fprintf(file,"      %s[%ld,%ld]: ",tag,dataset,record);
+              (void) fprintf(file,"      %s[%.20g,%.20g]: ",tag,(double)
+                dataset,(double) record);
               length=(size_t) (GetStringInfoDatum(profile)[i++] << 8);
               length|=GetStringInfoDatum(profile)[i++];
               attribute=(char *) NULL;
@@ -1091,8 +1083,8 @@
     elapsed_time+0.5),MagickFalse,format);
   (void) fprintf(file,"  Pixels per second: %s\n",format);
   (void) fprintf(file,"  User time: %0.3fu\n",user_time);
-  (void) fprintf(file,"  Elapsed time: %ld:%02ld.%03ld\n",(long)
-    (elapsed_time/60.0),(long) ceil(fmod(elapsed_time,60.0)),(long)
+  (void) fprintf(file,"  Elapsed time: %.20g:%02g.%03g\n",(double)
+    (elapsed_time/60.0),ceil(fmod(elapsed_time,60.0)),(double)
     (1000.0*(elapsed_time-floor(elapsed_time))));
   (void) fprintf(file,"  Version: %s\n",GetMagickVersion((size_t *)
     NULL));
diff --git a/magick/layer.c b/magick/layer.c
index 59f9631..79a8d54 100644
--- a/magick/layer.c
+++ b/magick/layer.c
@@ -1263,8 +1263,9 @@
   while ( next != (const Image *) NULL )
   {
 #if 0 /*  For debuging */
-    printf("image %ld :- %d  %ldx%ld%+ld%+ld\n", i, disposals[i],
-           bounds[i].width, bounds[i].height, bounds[i].x, bounds[i].y );
+    printf("image %.20g :- %.20g  %.20gx%.20g%+.20gx%+.20g\n", (double) i,
+      (double) disposals[i],(double) bounds[i].width,(double)
+      bounds[i].height,(double) bounds[i].x,(double) bounds[i].y );
 #endif
     prev_image=CloneImage(next,0,0,MagickTrue,exception);
     if (prev_image == (Image *) NULL)
diff --git a/magick/log.c b/magick/log.c
index 9699645..f2fc101 100644
--- a/magick/log.c
+++ b/magick/log.c
@@ -831,20 +831,19 @@
       (void) FormatMagickString(text,extent,
         "<entry>\n"
         "  <timestamp>%s</timestamp>\n"
-        "  <elapsed-time>%ld:%02ld.%03ld</elapsed-time>\n"
+        "  <elapsed-time>%.20g:%02g.%03g</elapsed-time>\n"
         "  <user-time>%0.3f</user-time>\n"
-        "  <process-id>%ld</process-id>\n"
-        "  <thread-id>%lu</thread-id>\n"
+        "  <process-id>%.20g</process-id>\n"
+        "  <thread-id>%.20g</thread-id>\n"
         "  <module>%s</module>\n"
         "  <function>%s</function>\n"
-        "  <line>%lu</line>\n"
+        "  <line>%.20g</line>\n"
         "  <domain>%s</domain>\n"
         "  <event>%s</event>\n"
-        "</entry>",timestamp,(long) (elapsed_time/60.0),(long)
-        floor(fmod(elapsed_time,60.0)),(long) (1000.0*(elapsed_time-
-        floor(elapsed_time))+0.5),user_time,(long) getpid(),
-        (unsigned long) GetMagickThreadSignature(),module,function,
-        (unsigned long) line, domain,event);
+        "</entry>",timestamp,(double) (elapsed_time/60.0),
+        floor(fmod(elapsed_time,60.0)),(double) (1000.0*(elapsed_time-
+        floor(elapsed_time))+0.5),user_time,(double) getpid(),(double)
+        GetMagickThreadSignature(),module,function,(double) line,domain,event);
       return(text);
     }
   /*
@@ -931,13 +930,13 @@
             q++;
             break;
           }
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long)
-          (log_info->generation % log_info->generations));
+        q+=FormatMagickString(q,extent,"%.20g",(double) (log_info->generation %
+          log_info->generations));
         break;
       }
       case 'l':
       {
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long) line);
+        q+=FormatMagickString(q,extent,"%.20g",(double) line);
         break;
       }
       case 'm':
@@ -961,14 +960,14 @@
       }
       case 'p':
       {
-        q+=FormatMagickString(q,extent,"%ld",(long) getpid());
+        q+=FormatMagickString(q,extent,"%.20g",(double) getpid());
         break;
       }
       case 'r':
       {
-        q+=FormatMagickString(q,extent,"%ld:%02ld.%03ld",(long)
-          (elapsed_time/60.0),(long) floor(fmod(elapsed_time,60.0)),
-          (long) (1000.0*(elapsed_time-floor(elapsed_time))+0.5));
+        q+=FormatMagickString(q,extent,"%.20g:%02g.%03g",(double)
+          (elapsed_time/60.0),floor(fmod(elapsed_time,60.0)),(double)
+          (1000.0*(elapsed_time-floor(elapsed_time))+0.5));
         break;
       }
       case 't':
@@ -1068,8 +1067,8 @@
             q++;
             break;
           }
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long)
-          (log_info->generation % log_info->generations));
+        q+=FormatMagickString(q,extent,"%.20g",(double) (log_info->generation %
+          log_info->generations));
         break;
       }
       case 'n':
@@ -1079,7 +1078,7 @@
       }
       case 'p':
       {
-        q+=FormatMagickString(q,extent,"%ld",(long) getpid());
+        q+=FormatMagickString(q,extent,"%.20g",(double) getpid());
         break;
       }
       case 'v':
diff --git a/magick/log.h b/magick/log.h
index a47c55f..52cb8bc 100644
--- a/magick/log.h
+++ b/magick/log.h
@@ -26,7 +26,7 @@
 #include "magick/exception.h"
 
 #if !defined(GetMagickModule)
-# define GetMagickModule()  __FILE__,__func__,(unsigned long) __LINE__
+# define GetMagickModule()  __FILE__,__func__,(size_t) __LINE__
 #endif
 
 #define MagickLogFilename  "log.xml"
diff --git a/magick/montage.c b/magick/montage.c
index 93c5d55..de5d11c 100644
--- a/magick/montage.c
+++ b/magick/montage.c
@@ -660,12 +660,12 @@
       GetMontageGeometry(montage_info->tile,number_images,&x_offset,&y_offset,
         &sans,&sans);
     y_offset+=(ssize_t) title_offset;
-    (void) FormatMagickString(montage->montage,MaxTextExtent,"%ldx%ld%+ld%+ld",
-      (long) (extract_info.width+(extract_info.x+border_width)*2),
-      (long) (extract_info.height+(extract_info.y+border_width)*2+
-      (long) ((metrics.ascent-metrics.descent+4)*number_lines+
-      (montage_info->shadow != MagickFalse ? 4 : 0))),(long) x_offset,
-      (long) y_offset);
+    (void) FormatMagickString(montage->montage,MaxTextExtent,
+      "%.20gx%.20g%+.20gx%+.20g",(double) (extract_info.width+
+      (extract_info.x+border_width)*2),(double) (extract_info.height+
+      (extract_info.y+border_width)*2+(double) ((metrics.ascent-
+      metrics.descent+4)*number_lines+(montage_info->shadow != MagickFalse ? 4 :
+      0))),(double) x_offset,(double) y_offset);
     *montage->directory='\0';
     tile=0;
     while (tile < MagickMin((ssize_t) tiles_per_page,(ssize_t) number_images))
@@ -697,9 +697,9 @@
         clone_info->gravity=CenterGravity;
         clone_info->pointsize*=2.0;
         (void) GetTypeMetrics(image_list[0],clone_info,&metrics);
-        (void) FormatMagickString(geometry,MaxTextExtent,"%lux%lu%+ld%+ld",
-          (unsigned long) montage->columns,(unsigned long) (metrics.ascent-
-          metrics.descent),0L,(long) extract_info.y+4);
+        (void) FormatMagickString(geometry,MaxTextExtent,
+          "%.20gx%.20g%+.20gx%+.20g",(double) montage->columns,(double)
+          (metrics.ascent-metrics.descent),0.0,(double) extract_info.y+4);
         (void) CloneString(&clone_info->geometry,geometry);
         (void) CloneString(&clone_info->text,title);
         (void) AnnotateImage(montage,clone_info);
@@ -766,8 +766,8 @@
       tile_image->gravity=montage_info->gravity;
       if (image->gravity != UndefinedGravity)
         tile_image->gravity=image->gravity;
-      (void) FormatMagickString(tile_geometry,MaxTextExtent,"%lux%lu+0+0",
-        (unsigned long) image->columns,(unsigned long) image->rows);
+      (void) FormatMagickString(tile_geometry,MaxTextExtent,"%.20gx%.20g+0+0",
+        (double) image->columns,(double) image->rows);
       flags=ParseGravityGeometry(tile_image,tile_geometry,&geometry,exception);
       x=(ssize_t) (geometry.x+border_width);
       y=(ssize_t) (geometry.y+border_width);
@@ -834,13 +834,13 @@
                 Annotate composite tile with label.
               */
               (void) FormatMagickString(geometry,MaxTextExtent,
-                "%lux%lu%+ld%+ld",(unsigned long) ((montage_info->frame ?
-                image->columns : width)-2*border_width),(unsigned long)
+                "%.20gx%.20g%+.20gx%+.20g",(double) ((montage_info->frame ?
+                image->columns : width)-2*border_width),(double)
                 (metrics.ascent-metrics.descent+4)*MultilineCensus(value),
-                (long) (x_offset+border_width),(long) ((montage_info->frame ?
-                y_offset+height+border_width+4 : y_offset+extract_info.height+
-                border_width+(montage_info->shadow != MagickFalse ? 4 : 0))+
-                bevel_width));
+                (double) (x_offset+border_width),(double)
+                ((montage_info->frame ? y_offset+height+border_width+4 :
+                y_offset+extract_info.height+border_width+
+                (montage_info->shadow != MagickFalse ? 4 : 0))+bevel_width));
               (void) CloneString(&draw_info->geometry,geometry);
               (void) CloneString(&draw_info->text,value);
               (void) AnnotateImage(montage,draw_info);
diff --git a/magick/morphology.c b/magick/morphology.c
index 5d54450..04dbc1c 100644
--- a/magick/morphology.c
+++ b/magick/morphology.c
@@ -499,7 +499,7 @@
 
       /* Error handling -- this is not proper error handling! */
       if ( new_kernel == (KernelInfo *) NULL ) {
-        fprintf(stderr, "Failed to parse kernel number #%lu\n",(unsigned long)
+        fprintf(stderr, "Failed to parse kernel number #%.20g\n",(double)
           kernel_number);
         if ( kernel != (KernelInfo *) NULL )
           kernel=DestroyKernelInfo(kernel);
@@ -2908,13 +2908,13 @@
         /* Extra information for debugging compound operations */
         if ( verbose == MagickTrue ) {
           if ( stage_limit > 1 )
-            (void) FormatMagickString(v_info, MaxTextExtent, "%s:%lu.%lu -> ",
-             MagickOptionToMnemonic(MagickMorphologyOptions, method),
-             (unsigned long) method_loop,(unsigned long) stage_loop);
+            (void) FormatMagickString(v_info,MaxTextExtent,"%s:%.20g.%.20g -> ",
+             MagickOptionToMnemonic(MagickMorphologyOptions,method),(double)
+             method_loop,(double) stage_loop);
           else if ( primative != method )
-            (void) FormatMagickString(v_info, MaxTextExtent, "%s:%lu -> ",
-               MagickOptionToMnemonic(MagickMorphologyOptions, method),
-               (unsigned long) method_loop);
+            (void) FormatMagickString(v_info, MaxTextExtent, "%s:%.20g -> ",
+              MagickOptionToMnemonic(MagickMorphologyOptions, method),(double)
+              method_loop);
           else
             v_info[0] = '\0';
         }
@@ -2949,11 +2949,11 @@
           if ( verbose == MagickTrue ) {
             if ( kernel_loop > 1 )
               fprintf(stderr, "\n"); /* add end-of-line from previous */
-            fprintf(stderr, "%s%s%s:%lu.%lu #%lu => Changed %lu", v_info,
-                MagickOptionToMnemonic(MagickMorphologyOptions, primative),
-                 ( this_kernel == rflt_kernel ) ? "*" : "",
-               (unsigned long) method_loop+kernel_loop-1,(unsigned long)
-               kernel_number,(unsigned long) count,(unsigned long) changed);
+            (void) fprintf(stderr, "%s%s%s:%.20g.%.20g #%.20g => Changed %.20g",
+              v_info,MagickOptionToMnemonic(MagickMorphologyOptions,
+              primative),(this_kernel == rflt_kernel ) ? "*" : "",
+              (double) (method_loop+kernel_loop-1),(double) kernel_number,
+              (double) count,(double) changed);
           }
           /* prepare next loop */
           { Image *tmp = work_image;   /* swap images for iteration */
@@ -2966,7 +2966,7 @@
         } /* End Loop 4: Iterate the kernel with primative */
 
         if ( verbose == MagickTrue && kernel_changed != changed )
-          fprintf(stderr, "   Total %lu",(unsigned long) kernel_changed);
+          fprintf(stderr, "   Total %.20g",(double) kernel_changed);
         if ( verbose == MagickTrue && stage_loop < stage_limit )
           fprintf(stderr, "\n"); /* add end-of-line before looping */
 
diff --git a/magick/property.c b/magick/property.c
index 4edb7c9..646ed58 100644
--- a/magick/property.c
+++ b/magick/property.c
@@ -1312,13 +1312,13 @@
             case EXIF_FMT_BYTE:
             case EXIF_FMT_UNDEFINED:
             {
-              EXIFMultipleValues(1,"%lu",(unsigned long)
+              EXIFMultipleValues(1,"%.20g",(double)
                 (*(unsigned char *) p1));
               break;
             }
             case EXIF_FMT_SBYTE:
             {
-              EXIFMultipleValues(1,"%ld",(long) (*(signed char *) p1));
+              EXIFMultipleValues(1,"%.20g",(double) (*(signed char *) p1));
               break;
             }
             case EXIF_FMT_SSHORT:
@@ -1333,25 +1333,27 @@
             }
             case EXIF_FMT_ULONG:
             {
-              EXIFMultipleValues(4,"%lu",(long) ReadPropertyLong(endian,p1));
+              EXIFMultipleValues(4,"%.20g",(double)
+                ReadPropertyLong(endian,p1));
               break;
             }
             case EXIF_FMT_SLONG:
             {
-              EXIFMultipleValues(4,"%ld",(long) ReadPropertyLong(endian,p1));
+              EXIFMultipleValues(4,"%.20g",(double)
+                ReadPropertyLong(endian,p1));
               break;
             }
             case EXIF_FMT_URATIONAL:
             {
-              EXIFMultipleFractions(8,"%ld/%ld",(long)
-                ReadPropertyLong(endian,p1),(long)
+              EXIFMultipleFractions(8,"%.20g/%.20g",(double)
+                ReadPropertyLong(endian,p1),(double)
                 ReadPropertyLong(endian,p1+4));
               break;
             }
             case EXIF_FMT_SRATIONAL:
             {
-              EXIFMultipleFractions(8,"%ld/%ld",(long)
-                ReadPropertyLong(endian,p1),(long)
+              EXIFMultipleFractions(8,"%.20g/%.20g",(double)
+                ReadPropertyLong(endian,p1),(double)
                 ReadPropertyLong(endian,p1+4));
               break;
             }
@@ -1806,8 +1808,7 @@
     "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
   (void) ConcatenateString(&path,message);
   (void) FormatMagickString(message,MaxTextExtent,
-    "<svg width=\"%lu\" height=\"%lu\">\n",(unsigned long) columns,
-    (unsigned long) rows);
+    "<svg width=\"%.20g\" height=\"%.20g\">\n",(double) columns,(double) rows);
   (void) ConcatenateString(&path,message);
   (void) FormatMagickString(message,MaxTextExtent,"<g>\n");
   (void) ConcatenateString(&path,message);
@@ -2199,7 +2200,7 @@
     {
       if (LocaleNCompare("depth",property,5) == 0)
         {
-          (void) FormatMagickString(value,MaxTextExtent,"%lu",(unsigned long)
+          (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
             image->depth);
           break;
         }
@@ -2235,8 +2236,8 @@
     {
       if (LocaleNCompare("height",property,6) == 0)
         {
-          (void) FormatMagickString(value,MaxTextExtent,"%lu",
-            image->magick_rows != 0 ? image->magick_rows : 256UL);
+          (void) FormatMagickString(value,MaxTextExtent,"%.20g",
+            image->magick_rows != 0 ? (double) image->magick_rows : 256.0);
           break;
         }
       break;
@@ -2340,7 +2341,7 @@
           p=image;
           for (page=1; GetPreviousImageInList(p) != (Image *) NULL; page++)
             p=GetPreviousImageInList(p);
-          (void) FormatMagickString(value,MaxTextExtent,"%lu",(unsigned long)
+          (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
             page);
           break;
         }
@@ -2359,17 +2360,17 @@
         }
       if (LocaleNCompare("scenes",property,6) == 0)
         {
-          (void) FormatMagickString(value,MaxTextExtent,"%lu",
-            (unsigned long) GetImageListLength(image));
+          (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+            GetImageListLength(image));
           break;
         }
       if (LocaleNCompare("scene",property,5) == 0)
         {
-          (void) FormatMagickString(value,MaxTextExtent,"%lu",(unsigned long)
+          (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
             image->scene);
           if (image_info->number_scenes != 0)
-            (void) FormatMagickString(value,MaxTextExtent,"%lu",
-              (unsigned long) image_info->scene);
+            (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+              image_info->scene);
           break;
         }
       if (LocaleNCompare("skewness",property,8) == 0)
@@ -2413,7 +2414,7 @@
     {
       if (LocaleNCompare("width",property,5) == 0)
         {
-          (void) FormatMagickString(value,MaxTextExtent,"%lu",(unsigned long)
+          (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double) 
             (image->magick_columns != 0 ? image->magick_columns : 256));
           break;
         }
@@ -2617,7 +2618,7 @@
         /*
           File size.
         */
-        (void) FormatMagickString(format,MaxTextExtent,"%lu",(unsigned long)
+        (void) FormatMagickString(format,MaxTextExtent,"%.20g",(double)
           image->extent);
         if (image->extent != (MagickSizeType) ((size_t) image->extent))
           (void) FormatMagickSize(image->extent,MagickFalse,format);
@@ -2703,9 +2704,9 @@
         /*
           Image geometry.
         */
-        q+=FormatMagickString(q,extent,"%lux%lu%+ld%+ld",(unsigned long)
-          image->page.width,(unsigned long) image->page.height,(long)
-          image->page.x,(long) image->page.y);
+        q+=FormatMagickString(q,extent,"%.20gx%.20g%+.20gx%+.20g",(double)
+          image->page.width,(double) image->page.height,(double)
+          image->page.x,(double) image->page.y);
         break;
       }
       case 'h':
@@ -2713,7 +2714,7 @@
         /*
           Image height.
         */
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long)
+        q+=FormatMagickString(q,extent,"%.20g",(double)
           (image->rows != 0 ? image->rows : image->magick_rows));
         break;
       }
@@ -2730,7 +2731,7 @@
         /*
           Number of unique colors.
         */
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long)
+        q+=FormatMagickString(q,extent,"%.20g",(double)
           GetNumberColors(image,(FILE *) NULL,&image->exception));
         break;
       }
@@ -2776,7 +2777,7 @@
         /*
           Number of images in the list.
         */
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long)
+        q+=FormatMagickString(q,extent,"%.20g",(double)
           GetImageListLength(image));
         break;
       }
@@ -2802,7 +2803,7 @@
         p=image;
         for (page=1; GetPreviousImageInList(p) != (Image *) NULL; page++)
           p=GetPreviousImageInList(p);
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long) page);
+        q+=FormatMagickString(q,extent,"%.20g",(double) page);
         break;
       }
       case 'q':
@@ -2810,7 +2811,7 @@
         /*
           Image depth.
         */
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long) image->depth);
+        q+=FormatMagickString(q,extent,"%.20g",(double) image->depth);
         break;
       }
       case 'r':
@@ -2836,10 +2837,9 @@
           Image scene number.
         */
         if (text_info->number_scenes == 0)
-          q+=FormatMagickString(q,extent,"%lu",(unsigned long) image->scene);
+          q+=FormatMagickString(q,extent,"%.20g",(double) image->scene);
         else
-          q+=FormatMagickString(q,extent,"%lu",(unsigned long)
-            text_info->scene);
+          q+=FormatMagickString(q,extent,"%.20g",(double) text_info->scene);
         break;
       }
       case 'u':
@@ -2856,7 +2856,7 @@
         /*
           Image width.
         */
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long)
+        q+=FormatMagickString(q,extent,"%.20g",(double)
           (image->columns != 0 ? image->columns : image->magick_columns));
         break;
       }
@@ -2885,7 +2885,7 @@
         /*
           Image depth.
         */
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long) image->depth);
+        q+=FormatMagickString(q,extent,"%.20g",(double) image->depth);
         break;
       }
       case 'A':
@@ -2917,13 +2917,13 @@
       }
       case 'G':
       {
-        q+=FormatMagickString(q,extent,"%lux%lu",(unsigned long)
-          image->magick_columns,(unsigned long) image->magick_rows);
+        q+=FormatMagickString(q,extent,"%.20gx%.20g",(double)
+          image->magick_columns,(double) image->magick_rows);
         break;
       }
       case 'H':
       {
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long)
+        q+=FormatMagickString(q,extent,"%.20g",(double)
           image->page.height);
         break;
       }
@@ -2935,13 +2935,13 @@
       }
       case 'P':
       {
-        q+=FormatMagickString(q,extent,"%lux%lu",(unsigned long)
-          image->page.width,(unsigned long) image->page.height);
+        q+=FormatMagickString(q,extent,"%.20gx%.20g",(double) image->page.width,
+          (double) image->page.height);
         break;
       }
       case 'Q':
       {
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long) image->quality);
+        q+=FormatMagickString(q,extent,"%.20g",(double) image->quality);
         break;
       }
       case 'S':
@@ -2952,28 +2952,28 @@
         if (text_info->number_scenes == 0)
           q+=CopyMagickString(q,"2147483647",extent);
         else
-          q+=FormatMagickString(q,extent,"%lu",(unsigned long)
+          q+=FormatMagickString(q,extent,"%.20g",(double)
             (text_info->scene+text_info->number_scenes));
         break;
       }
       case 'T':
       {
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long) image->delay);
+        q+=FormatMagickString(q,extent,"%.20g",(double) image->delay);
         break;
       }
       case 'W':
       {
-        q+=FormatMagickString(q,extent,"%lu",(unsigned long) image->page.width);
+        q+=FormatMagickString(q,extent,"%.20g",(double) image->page.width);
         break;
       }
       case 'X':
       {
-        q+=FormatMagickString(q,extent,"%+ld",(long) image->page.x);
+        q+=FormatMagickString(q,extent,"%+.20g",(double) image->page.x);
         break;
       }
       case 'Y':
       {
-        q+=FormatMagickString(q,extent,"%+ld",(long) image->page.y);
+        q+=FormatMagickString(q,extent,"%+.20g",(double) image->page.y);
         break;
       }
       case 'Z':
@@ -3111,8 +3111,9 @@
           Image bounding box.
         */
         page=GetImageBoundingBox(image,&image->exception);
-        q+=FormatMagickString(q,MaxTextExtent,"%lux%lu%+ld%+ld",(unsigned long)
-          page.width,(unsigned long) page.height,(long) page.x,(long) page.y);
+        q+=FormatMagickString(q,MaxTextExtent,"%.20gx%.20g%+.20gx%+.20g",
+          (double) page.width,(double) page.height,(double) page.x,(double)
+          page.y);
         break;
       }
       case '#':
diff --git a/magick/resize.c b/magick/resize.c
index cbec4a7..d18465e 100644
--- a/magick/resize.c
+++ b/magick/resize.c
@@ -797,7 +797,7 @@
         Output filter graph -- for graphing filter result.
       */
       support=GetResizeFilterSupport(resize_filter);
-      (void) printf("# support = %lg\n",support);
+      (void) printf("# support = %g\n",support);
       for (x=0.0; x <= support; x+=0.01f)
         (void) printf("%5.2lf\t%lf\n",x,(double) GetResizeFilterWeight(
           resize_filter,x));
@@ -3004,11 +3004,11 @@
   (void) CopyMagickString(value,image->magick_filename,MaxTextExtent);
   if (GetPathAttributes(image->filename,&attributes) != MagickFalse)
     {
-      (void) FormatMagickString(value,MaxTextExtent,"%ld",(long)
+      (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
         attributes.st_mtime);
       (void) SetImageProperty(thumbnail_image,"Thumb::MTime",value);
     }
-  (void) FormatMagickString(value,MaxTextExtent,"%ld",(long)
+  (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
     attributes.st_mtime);
   (void) FormatMagickSize(GetBlobSize(image),MagickFalse,value);
   (void) ConcatenateMagickString(value,"B",MaxTextExtent);
@@ -3018,14 +3018,14 @@
   (void) SetImageProperty(thumbnail_image,"Thumb::Mimetype",value);
   (void) SetImageProperty(thumbnail_image,"software",
     GetMagickVersion(&version));
-  (void) FormatMagickString(value,MaxTextExtent,"%lu",
-     (unsigned long) image->magick_columns);
+  (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+    image->magick_columns);
   (void) SetImageProperty(thumbnail_image,"Thumb::Image::Width",value);
-  (void) FormatMagickString(value,MaxTextExtent,"%lu",(unsigned long)
+  (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
     image->magick_rows);
   (void) SetImageProperty(thumbnail_image,"Thumb::Image::height",value);
-  (void) FormatMagickString(value,MaxTextExtent,"%lu",
-    (unsigned long) GetImageListLength(image));
+  (void) FormatMagickString(value,MaxTextExtent,"%.20g",(double)
+    GetImageListLength(image));
   (void) SetImageProperty(thumbnail_image,"Thumb::Document::Pages",value);
   return(thumbnail_image);
 }
diff --git a/magick/resource.c b/magick/resource.c
index cb3a10d..ed18b9a 100644
--- a/magick/resource.c
+++ b/magick/resource.c
@@ -678,15 +678,15 @@
   (void) FormatMagickSize(resource_info.disk_limit,MagickFalse,disk_limit);
   (void) CopyMagickString(time_limit,"unlimited",MaxTextExtent);
   if (resource_info.time_limit != MagickResourceInfinity)
-    (void) FormatMagickString(time_limit,MaxTextExtent,"%lu",(unsigned long)
+    (void) FormatMagickString(time_limit,MaxTextExtent,"%.20g",(double)
       resource_info.time_limit);
   (void) fprintf(file,"File         Area       Memory          Map"
     "         Disk    Thread         Time\n");
   (void) fprintf(file,"--------------------------------------------------------"
     "-----------------------\n");
-  (void) fprintf(file,"%4lu  %10sB  %10sB  %10sB  %10sB    %6lu  %11s\n",
-    (unsigned long) resource_info.file_limit,area_limit,memory_limit,map_limit,
-    disk_limit,(unsigned long) resource_info.thread_limit,time_limit);
+  (void) fprintf(file,"%4g  %10sB  %10sB  %10sB  %10sB    %6g  %11s\n",(double)
+    resource_info.file_limit,area_limit,memory_limit,map_limit,disk_limit,
+    (double) resource_info.thread_limit,time_limit);
   (void) fflush(file);
   UnlockSemaphoreInfo(resource_semaphore);
   return(MagickTrue);
diff --git a/magick/segment.c b/magick/segment.c
index 8bc0253..d7fd30e 100644
--- a/magick/segment.c
+++ b/magick/segment.c
@@ -451,16 +451,16 @@
         cluster_threshold);
       (void) fprintf(stdout,"\tWeighting Exponent = %g\n",(double)
         weighting_exponent);
-      (void) fprintf(stdout,"\tTotal Number of Clusters = %lu\n\n",
-        (unsigned long) number_clusters);
+      (void) fprintf(stdout,"\tTotal Number of Clusters = %.20g\n\n",(double)
+        number_clusters);
       /*
         Print the total number of points per cluster.
       */
       (void) fprintf(stdout,"\n\nNumber of Vectors Per Cluster\n");
       (void) fprintf(stdout,"=============================\n\n");
       for (cluster=head; cluster != (Cluster *) NULL; cluster=cluster->next)
-        (void) fprintf(stdout,"Cluster #%ld = %ld\n",(long) cluster->id,
-          (long) cluster->count);
+        (void) fprintf(stdout,"Cluster #%.20g = %.20g\n",(double) cluster->id,
+          (double) cluster->count);
       /*
         Print the cluster extents.
       */
@@ -469,11 +469,11 @@
       (void) fprintf(stdout,"================");
       for (cluster=head; cluster != (Cluster *) NULL; cluster=cluster->next)
       {
-        (void) fprintf(stdout,"\n\nCluster #%ld\n\n",(long) cluster->id);
-        (void) fprintf(stdout,"%ld-%ld  %ld-%ld  %ld-%ld\n",(long)
-          cluster->red.left,(long) cluster->red.right,(long)
-          cluster->green.left,(long) cluster->green.right,(long)
-          cluster->blue.left,(long) cluster->blue.right);
+        (void) fprintf(stdout,"\n\nCluster #%.20g\n\n",(double) cluster->id);
+        (void) fprintf(stdout,"%.20g-%.20g  %.20g-%.20g  %.20g-%.20g\n",(double)
+          cluster->red.left,(double) cluster->red.right,(double)
+          cluster->green.left,(double) cluster->green.right,(double)
+          cluster->blue.left,(double) cluster->blue.right);
       }
       /*
         Print the cluster center values.
@@ -483,7 +483,7 @@
       (void) fprintf(stdout,"=====================");
       for (cluster=head; cluster != (Cluster *) NULL; cluster=cluster->next)
       {
-        (void) fprintf(stdout,"\n\nCluster #%ld\n\n",(long) cluster->id);
+        (void) fprintf(stdout,"\n\nCluster #%.20g\n\n",(double) cluster->id);
         (void) fprintf(stdout,"%g  %g  %g\n",(double)
           cluster->red.center,(double) cluster->green.center,(double)
           cluster->blue.center);
diff --git a/magick/shear.c b/magick/shear.c
index 9d560e8..06fdc4d 100644
--- a/magick/shear.c
+++ b/magick/shear.c
@@ -978,8 +978,8 @@
   median_image=DestroyImage(median_image);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TransformEvent,GetMagickModule(),"  Deskew geometry: "
-      "%lux%lu%+ld%+ld",(unsigned long) geometry.width,(unsigned long)
-      geometry.height,(long) geometry.x,(long) geometry.y);
+      "%.20gx%.20g%+.20gx%+.20g",(double) geometry.width,(double)
+      geometry.height,(double) geometry.x,(double) geometry.y);
   crop_image=CropImage(deskew_image,&geometry,exception);
   deskew_image=DestroyImage(deskew_image);
   return(crop_image);
diff --git a/magick/threshold.c b/magick/threshold.c
index d392ab4..b911fad 100644
--- a/magick/threshold.c
+++ b/magick/threshold.c
@@ -1027,8 +1027,8 @@
       }
       if ( map->levels[i] < 0 || map->levels[i] > map->divisor ) {
         (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
-          "XmlInvalidContent", "<level> %ld out of range, map \"%s\"",
-          (long) map->levels[i],map_id);
+          "XmlInvalidContent", "<level> %.20g out of range, map \"%s\"",
+          (double) map->levels[i],map_id);
         thresholds = DestroyXMLTree(thresholds);
         map = DestroyThresholdMap(map);
         return(map);
@@ -1461,7 +1461,7 @@
 #endif
 
 #if 0
-printf("DEBUG levels  r=%ld g=%ld b=%ld a=%ld i=%ld\n",
+printf("DEBUG levels  r=%u g=%u b=%u a=%u i=%u\n",
      levels.red, levels.green, levels.blue, levels.opacity, levels.index);
 #endif
 
diff --git a/magick/type.c b/magick/type.c
index c779c84..4c36804 100644
--- a/magick/type.c
+++ b/magick/type.c
@@ -866,8 +866,8 @@
     glyphs="unknown";
     if (type_info[i]->glyphs != (char *) NULL)
       glyphs=type_info[i]->glyphs;
-    (void) FormatMagickString(weight,MaxTextExtent,"%lu",
-      (unsigned long) type_info[i]->weight);
+    (void) FormatMagickString(weight,MaxTextExtent,"%.20g",(double)
+      type_info[i]->weight);
     (void) fprintf(file,"  Font: %s\n",name);
     (void) fprintf(file,"    family: %s\n",family);
     (void) fprintf(file,"    style: %s\n",style);
diff --git a/magick/utility.c b/magick/utility.c
index dacabc3..70cd18a 100644
--- a/magick/utility.c
+++ b/magick/utility.c
@@ -940,13 +940,13 @@
     ssize_t
       count;
 
-    (void) FormatMagickString(link_path,MaxTextExtent,"/proc/%ld/exe",
-      (long) getpid());
+    (void) FormatMagickString(link_path,MaxTextExtent,"/proc/%.20g/exe",
+      (double) getpid());
     count=readlink(link_path,execution_path,PATH_MAX);
     if (count == -1)
       {
-        (void) FormatMagickString(link_path,MaxTextExtent,"/proc/%ld/file",
-          (long) getpid());
+        (void) FormatMagickString(link_path,MaxTextExtent,"/proc/%.20g/file",
+          (double) getpid());
         count=readlink(link_path,execution_path,PATH_MAX);
       }
     if ((count > 0) && (count <= (ssize_t) PATH_MAX))
diff --git a/magick/xwindow.c b/magick/xwindow.c
index 5554c74..ba0ee2c 100644
--- a/magick/xwindow.c
+++ b/magick/xwindow.c
@@ -2044,9 +2044,8 @@
     undo_image=GetPreviousImageInList(undo_image);
   }
   (void) fprintf(file,"Undo Edit Cache\n  levels: %u\n",levels);
-  (void) fprintf(file,"  bytes: %lumb\n",(unsigned long)
-    ((bytes+(1 << 19)) >> 20));
-  (void) fprintf(file,"  limit: %lumb\n\n",(unsigned long)
+  (void) fprintf(file,"  bytes: %.20gmb\n",(double) ((bytes+(1 << 19)) >> 20));
+  (void) fprintf(file,"  limit: %.20gmb\n\n",(double)
     resource_info->undo_cache);
   /*
     Write info about the image to a file.
@@ -5865,8 +5864,8 @@
         resource_info->image_info->texture != (char *) NULL ?
         resource_info->image_info->texture : "pattern:checkerboard",
         MaxTextExtent);
-      (void) FormatMagickString(size,MaxTextExtent,"%lux%lu",(unsigned long)
-        image->columns,(unsigned long) image->rows);
+      (void) FormatMagickString(size,MaxTextExtent,"%.20gx%.20g",(double)
+        image->columns,(double) image->rows);
       image_info->size=ConstantString(size);
       pattern=ReadImage(image_info,&image->exception);
       image_info=DestroyImageInfo(image_info);
@@ -6478,8 +6477,8 @@
         resource_info->image_info->texture != (char *) NULL ?
         resource_info->image_info->texture : "pattern:checkerboard",
         MaxTextExtent);
-      (void) FormatMagickString(size,MaxTextExtent,"%lux%lu",(unsigned long)
-        image->columns,(unsigned long) image->rows);
+      (void) FormatMagickString(size,MaxTextExtent,"%.20gx%.20g",(double)
+        image->columns,(double) image->rows);
       image_info->size=ConstantString(size);
       pattern=ReadImage(image_info,&image->exception);
       image_info=DestroyImageInfo(image_info);
@@ -7096,7 +7095,7 @@
       while ((1 << i) <= (int) magnify)
         i++;
       (void) FormatMagickString(windows->magnify.name,MaxTextExtent,
-        "Magnify %luX",(unsigned long) i);
+        "Magnify %.20gX",(double) i);
       status=XStringListToTextProperty(&windows->magnify.name,1,&window_name);
       if (status != False)
         {
@@ -9266,7 +9265,7 @@
   value=resource_info->gamma_correct ? "True" : "False";
   XrmPutStringResource(&preferences_database,specifier,(char *) value);
   (void) FormatMagickString(specifier,MaxTextExtent,"%s.undoCache",client_name);
-  (void) FormatMagickString(cache,MaxTextExtent,"%lu",(unsigned long)
+  (void) FormatMagickString(cache,MaxTextExtent,"%.20g",(double)
     resource_info->undo_cache);
   XrmPutStringResource(&preferences_database,specifier,cache);
   (void) FormatMagickString(specifier,MaxTextExtent,"%s.usePixmap",client_name);