diff --git a/magick/annotate.h b/magick/annotate.h
index 65356ac..93a4e14 100644
--- a/magick/annotate.h
+++ b/magick/annotate.h
@@ -24,14 +24,14 @@
 
 #include "magick/draw.h"
 
-extern MagickExport ssize_t
-  FormatMagickCaption(Image *,DrawInfo *,TypeMetric *,char **);
-
 extern MagickExport MagickBooleanType
   AnnotateImage(Image *,const DrawInfo *),
   GetMultilineTypeMetrics(Image *,const DrawInfo *,TypeMetric *),
   GetTypeMetrics(Image *,const DrawInfo *,TypeMetric *);
 
+extern MagickExport ssize_t
+  FormatMagickCaption(Image *,DrawInfo *,TypeMetric *,char **);
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif
diff --git a/magick/cache-private.h b/magick/cache-private.h
index d3d8dbe..2404353 100644
--- a/magick/cache-private.h
+++ b/magick/cache-private.h
@@ -53,8 +53,8 @@
   (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
 
 typedef const PixelPacket
-  *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,const ssize_t,
-    const ssize_t,const size_t,const size_t,ExceptionInfo *),
+  *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,
+    const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *),
   *(*GetVirtualPixelsHandler)(const Image *);
 
 typedef PixelPacket
@@ -211,8 +211,8 @@
   *GetVirtualIndexesFromNexus(const Cache,NexusInfo *);
 
 extern MagickExport const PixelPacket
-  *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,const ssize_t,
-    const ssize_t,const size_t,const size_t,NexusInfo *,
+  *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,
+    const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
     ExceptionInfo *),
   *GetVirtualPixelsNexus(const Cache,NexusInfo *);
 
diff --git a/magick/color.h b/magick/color.h
index 3fdab0e..8855593 100644
--- a/magick/color.h
+++ b/magick/color.h
@@ -78,7 +78,8 @@
   ColorComponentGenesis(void),
   IsColorSimilar(const Image *,const PixelPacket *,const PixelPacket *),
   IsGrayImage(const Image *,ExceptionInfo *),
-  IsImageSimilar(const Image *,const Image *,ssize_t *x,ssize_t *y,ExceptionInfo *),
+  IsImageSimilar(const Image *,const Image *,ssize_t *x,ssize_t *y,
+    ExceptionInfo *),
   IsMagickColorSimilar(const MagickPixelPacket *,const MagickPixelPacket *),
   IsMonochromeImage(const Image *,ExceptionInfo *),
   IsOpacitySimilar(const Image *,const PixelPacket *,const PixelPacket *),
diff --git a/magick/constitute.h b/magick/constitute.h
index eb37b05..bbaca0e 100644
--- a/magick/constitute.h
+++ b/magick/constitute.h
@@ -35,8 +35,8 @@
 } StorageType;
 
 extern MagickExport Image
-  *ConstituteImage(const size_t,const size_t,const char *,
-    const StorageType,const void *,ExceptionInfo *),
+  *ConstituteImage(const size_t,const size_t,const char *,const StorageType,
+    const void *,ExceptionInfo *),
   *PingImage(const ImageInfo *,ExceptionInfo *),
   *PingImages(const ImageInfo *,ExceptionInfo *),
   *ReadImage(const ImageInfo *,ExceptionInfo *),
diff --git a/magick/deprecate.h b/magick/deprecate.h
index d5bc2ea..de817ba 100644
--- a/magick/deprecate.h
+++ b/magick/deprecate.h
@@ -85,6 +85,10 @@
     *next;  /* deprecated */
 } ImageAttribute;
 
+extern MagickExport CacheView
+  *CloseCacheView(CacheView *) magick_attribute((deprecated)),
+  *OpenCacheView(const Image *) magick_attribute((deprecated));
+
 extern MagickExport char
   *AllocateString(const char *) magick_attribute((deprecated)),
   *InterpretImageAttributes(const ImageInfo *,Image *,const char *)
@@ -93,11 +97,6 @@
   *TranslateText(const ImageInfo *,Image *,const char *)
      magick_attribute((deprecated));
 
-extern MagickExport Image
-  *AverageImages(const Image *,ExceptionInfo *),
-  *MaximumImages(const Image *,ExceptionInfo *),
-  *MinimumImages(const Image *,ExceptionInfo *);
-
 extern MagickExport const ImageAttribute
   *GetImageAttribute(const Image *,const char *),
   *GetImageClippingPathAttribute(Image *) magick_attribute((deprecated)),
@@ -117,6 +116,7 @@
 
 extern MagickExport Image
   *AllocateImage(const ImageInfo *) magick_attribute((deprecated)),
+  *AverageImages(const Image *,ExceptionInfo *),
   *ExtractSubimageFromImage(Image *,const Image *,ExceptionInfo *)
     magick_attribute((deprecated)),
   *GetImageFromMagickRegistry(const char *,ssize_t *id,ExceptionInfo *)
@@ -126,10 +126,12 @@
   *GetNextImage(const Image *) magick_attribute((deprecated)),
   *GetPreviousImage(const Image *) magick_attribute((deprecated)),
   *FlattenImages(Image *,ExceptionInfo *) magick_attribute((deprecated)),
+  *MaximumImages(const Image *,ExceptionInfo *),
+  *MinimumImages(const Image *,ExceptionInfo *),
   *MosaicImages(Image *,ExceptionInfo *) magick_attribute((deprecated)),
   *PopImageList(Image **) magick_attribute((deprecated)),
-  *RecolorImage(const Image *,const size_t,const double *,
-    ExceptionInfo *) magick_attribute((deprecated)),
+  *RecolorImage(const Image *,const size_t,const double *,ExceptionInfo *)
+    magick_attribute((deprecated)),
   *ShiftImageList(Image **) magick_attribute((deprecated)),
   *SpliceImageList(Image *,const ssize_t,const size_t,const Image *,
     ExceptionInfo *) magick_attribute((deprecated));
@@ -137,14 +139,13 @@
 extern MagickExport IndexPacket
   *GetCacheViewIndexes(CacheView *) magick_attribute((deprecated)),
   *GetIndexes(const Image *) magick_attribute((deprecated)),
-  ValidateColormapIndex(Image *,const size_t)
-    magick_attribute((deprecated));
+  ValidateColormapIndex(Image *,const size_t) magick_attribute((deprecated));
 
 extern MagickExport int
   GetImageGeometry(Image *,const char *,const unsigned int,RectangleInfo *)
     magick_attribute((deprecated)),
-  ParseImageGeometry(const char *,ssize_t *,ssize_t *,size_t *,
-    size_t *) magick_attribute((deprecated));
+  ParseImageGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *)
+    magick_attribute((deprecated));
 
 extern MagickExport ssize_t
   GetImageListIndex(const Image *) magick_attribute((deprecated)),
@@ -212,8 +213,8 @@
     magick_attribute((deprecated));
 
 extern MagickExport MagickPixelPacket
-  AcquireOneMagickPixel(const Image *,const ssize_t,const ssize_t,ExceptionInfo *)
-    magick_attribute((deprecated));
+  AcquireOneMagickPixel(const Image *,const ssize_t,const ssize_t,
+    ExceptionInfo *) magick_attribute((deprecated));
 
 extern MagickExport MonitorHandler
   GetMonitorHandler(void) magick_attribute((deprecated)),
@@ -241,7 +242,8 @@
     const size_t) magick_attribute((deprecated)),
   *GetImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
     const size_t) magick_attribute((deprecated)),
-  GetOnePixel(Image *,const ssize_t,const ssize_t) magick_attribute((deprecated)),
+  GetOnePixel(Image *,const ssize_t,const ssize_t)
+    magick_attribute((deprecated)),
   *GetPixels(const Image *) magick_attribute((deprecated)),
   *SetCacheViewPixels(CacheView *,const ssize_t,const ssize_t,const size_t,
     const size_t) magick_attribute((deprecated)),
@@ -249,6 +251,7 @@
     const size_t) magick_attribute((deprecated));
 
 extern MagickExport size_t
+  GetImageListSize(const Image *) magick_attribute((deprecated)),
   PopImagePixels(Image *,const QuantumType,unsigned char *)
     magick_attribute((deprecated)),
   PushImagePixels(Image *,const QuantumType,const unsigned char *)
@@ -280,13 +283,6 @@
   UnshiftImageList(Image **,const Image *,ExceptionInfo *)
     magick_attribute((deprecated));
 
-extern MagickExport size_t
-  GetImageListSize(const Image *) magick_attribute((deprecated));
-
-extern MagickExport CacheView
-  *CloseCacheView(CacheView *) magick_attribute((deprecated)),
-  *OpenCacheView(const Image *) magick_attribute((deprecated));
-
 extern MagickExport void
   *AcquireMemory(const size_t) magick_attribute((deprecated)),
   AllocateNextImage(const ImageInfo *,Image *) magick_attribute((deprecated)),
diff --git a/magick/display-private.h b/magick/display-private.h
index c125ec1..6ac18ff 100644
--- a/magick/display-private.h
+++ b/magick/display-private.h
@@ -26,8 +26,7 @@
 #include "magick/xwindow-private.h"
 
 extern MagickExport Image
-  *XDisplayImage(Display *,XResourceInfo *,char **,int,Image **,
-    size_t *);
+  *XDisplayImage(Display *,XResourceInfo *,char **,int,Image **,size_t *);
 
 extern MagickExport MagickBooleanType XDisplayBackgroundImage(Display *,
   XResourceInfo *,Image *);
diff --git a/magick/effect.h b/magick/effect.h
index e6f6833..fc02d9d 100644
--- a/magick/effect.h
+++ b/magick/effect.h
@@ -69,8 +69,7 @@
   *BlurImage(const Image *,const double,const double,ExceptionInfo *),
   *BlurImageChannel(const Image *,const ChannelType,const double,const double,
     ExceptionInfo *),
-  *ConvolveImage(const Image *,const size_t,const double *,
-    ExceptionInfo *),
+  *ConvolveImage(const Image *,const size_t,const double *,ExceptionInfo *),
   *ConvolveImageChannel(const Image *,const ChannelType,const size_t,
     const double *,ExceptionInfo *),
   *DespeckleImage(const Image *,ExceptionInfo *),
diff --git a/magick/exception.h b/magick/exception.h
index d3b3275..0f6adf4 100644
--- a/magick/exception.h
+++ b/magick/exception.h
@@ -152,8 +152,8 @@
 extern MagickExport MagickBooleanType
   ThrowException(ExceptionInfo *,const ExceptionType,const char *,
     const char *),
-  ThrowMagickException(ExceptionInfo *,const char *,const char *,
-    const size_t,const ExceptionType,const char *,const char *,...)
+  ThrowMagickException(ExceptionInfo *,const char *,const char *,const size_t,
+    const ExceptionType,const char *,const char *,...)
     magick_attribute((format (printf,7,8))),
   ThrowMagickExceptionList(ExceptionInfo *,const char *,const char *,
     const size_t,const ExceptionType,const char *,const char *,va_list)
diff --git a/magick/fx-private.h b/magick/fx-private.h
index 5f8577a..ba70155 100644
--- a/magick/fx-private.h
+++ b/magick/fx-private.h
@@ -31,8 +31,8 @@
 
 extern MagickExport MagickBooleanType
   FxEvaluateExpression(FxInfo *,MagickRealType *,ExceptionInfo *),
-  FxEvaluateChannelExpression(FxInfo *,const ChannelType,const ssize_t,const ssize_t,
-    MagickRealType *,ExceptionInfo *);
+  FxEvaluateChannelExpression(FxInfo *,const ChannelType,const ssize_t,
+   const ssize_t,MagickRealType *,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/magick/fx.h b/magick/fx.h
index 1d7b224..7ac4127 100644
--- a/magick/fx.h
+++ b/magick/fx.h
@@ -50,8 +50,8 @@
   *MorphImages(const Image *,const size_t,ExceptionInfo *),
   *PolaroidImage(const Image *,const DrawInfo *,const double,ExceptionInfo *),
   *SepiaToneImage(const Image *,const double,ExceptionInfo *),
-  *ShadowImage(const Image *,const double,const double,const ssize_t,const ssize_t,
-    ExceptionInfo *),
+  *ShadowImage(const Image *,const double,const double,const ssize_t,
+    const ssize_t,ExceptionInfo *),
   *SketchImage(const Image *,const double,const double,const double,
     ExceptionInfo *),
   *SteganoImage(const Image *,const Image *,ExceptionInfo *),
diff --git a/magick/hashmap.h b/magick/hashmap.h
index 84812e5..296def6 100644
--- a/magick/hashmap.h
+++ b/magick/hashmap.h
@@ -35,9 +35,8 @@
 
 extern MagickExport HashmapInfo
   *DestroyHashmap(HashmapInfo *),
-  *NewHashmap(const size_t,size_t (*)(const void *),
-    MagickBooleanType (*)(const void *,const void *),void *(*)(void *),
-    void *(*)(void *));
+  *NewHashmap(const size_t,size_t (*)(const void *),MagickBooleanType (*)
+    (const void *,const void *),void *(*)(void *),void *(*)(void *));
 
 extern MagickExport LinkedListInfo
   *DestroyLinkedList(LinkedListInfo *,void *(*)(void *)),
@@ -56,14 +55,12 @@
   PutEntryInHashmap(HashmapInfo *,const void *,const void *);
 
 extern MagickExport size_t
+  GetNumberOfElementsInLinkedList(const LinkedListInfo *),
+  GetNumberOfEntriesInHashmap(const HashmapInfo *),
   HashPointerType(const void *),
   HashStringType(const void *),
   HashStringInfoType(const void *);
 
-extern MagickExport size_t
-  GetNumberOfElementsInLinkedList(const LinkedListInfo *),
-  GetNumberOfEntriesInHashmap(const HashmapInfo *);
-
 extern MagickExport void
   ClearLinkedList(LinkedListInfo *,void *(*)(void *)),
   *GetLastValueInLinkedList(LinkedListInfo *),
diff --git a/magick/image-private.h b/magick/image-private.h
index 463aef8..42a44a8 100644
--- a/magick/image-private.h
+++ b/magick/image-private.h
@@ -60,24 +60,24 @@
   return(180.0*radians/MagickPI);
 }
 
-static inline unsigned char ScaleColor5to8(const size_t color)
+static inline unsigned char ScaleColor5to8(const unsigned int color)
 {
   return((unsigned char) (((color) << 3) | ((color) >> 2)));
 }
 
-static inline unsigned char ScaleColor6to8(const size_t color)
+static inline unsigned char ScaleColor6to8(const unsigned int color)
 {
   return((unsigned char) (((color) << 2) | ((color) >> 4)));
 }
 
-static inline size_t ScaleColor8to5(const unsigned char color)
+static inline unsigned int ScaleColor8to5(const unsigned char color)
 {
-  return((size_t) (((color) & ~0x07) >> 3));
+  return((unsigned int) (((color) & ~0x07) >> 3));
 }
 
-static inline size_t ScaleColor8to6(const unsigned char color)
+static inline unsigned int ScaleColor8to6(const unsigned char color)
 {
-  return((size_t) (((color) & ~0x03) >> 2));
+  return((unsigned int) (((color) & ~0x03) >> 2));
 }
 
 #if defined(__cplusplus) || defined(c_plusplus)
diff --git a/magick/image.h b/magick/image.h
index 444efd2..9f77bf1 100644
--- a/magick/image.h
+++ b/magick/image.h
@@ -490,8 +490,8 @@
 extern MagickExport Image
   *AcquireImage(const ImageInfo *),
   *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
-  *CloneImage(const Image *,const size_t,const size_t,
-    const MagickBooleanType,ExceptionInfo *),
+  *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
+    ExceptionInfo *),
   *CombineImages(const Image *,const ChannelType,ExceptionInfo *),
   *DestroyImage(Image *),
   *GetImageClipMask(const Image *,ExceptionInfo *),
@@ -506,9 +506,6 @@
   *CloneImageInfo(const ImageInfo *),
   *DestroyImageInfo(ImageInfo *);
 
-extern MagickExport ssize_t
-  GetImageReferenceCount(Image *);
-
 extern MagickExport MagickBooleanType
   ClipImage(Image *),
   ClipImagePath(Image *,const char *,const MagickBooleanType),
@@ -539,6 +536,9 @@
 extern MagickExport size_t
   InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *);
 
+extern MagickExport ssize_t
+  GetImageReferenceCount(Image *);
+
 extern MagickExport VirtualPixelMethod
   GetImageVirtualPixelMethod(const Image *),
   SetImageVirtualPixelMethod(const Image *,const VirtualPixelMethod);
diff --git a/magick/layer.h b/magick/layer.h
index 9f54928..d416bdb 100644
--- a/magick/layer.h
+++ b/magick/layer.h
@@ -62,8 +62,8 @@
   *OptimizePlusImageLayers(const Image *,ExceptionInfo *);
 
 extern MagickExport void
-  CompositeLayers(Image *,const CompositeOperator,Image *,const ssize_t,const ssize_t,
-    ExceptionInfo *),
+  CompositeLayers(Image *,const CompositeOperator,Image *,const ssize_t,
+    const ssize_t,ExceptionInfo *),
   OptimizeImageTransparency(const Image *,ExceptionInfo *),
   RemoveDuplicateLayers(Image **,ExceptionInfo *),
   RemoveZeroDelayLayers(Image **,ExceptionInfo *);
diff --git a/magick/list.h b/magick/list.h
index 8134a3e..aaac0d9 100644
--- a/magick/list.h
+++ b/magick/list.h
@@ -40,12 +40,12 @@
   *SplitImageList(Image *),
   *SyncNextImageInList(const Image *);
 
-extern MagickExport ssize_t
-  GetImageIndexInList(const Image *);
-
 extern MagickExport size_t
   GetImageListLength(const Image *);
 
+extern MagickExport ssize_t
+  GetImageIndexInList(const Image *);
+
 extern MagickExport void
   AppendImageToList(Image **,const Image *),
   DeleteImageFromList(Image **),
diff --git a/magick/log.h b/magick/log.h
index c3aab0b..a47c55f 100644
--- a/magick/log.h
+++ b/magick/log.h
@@ -75,12 +75,11 @@
   IsEventLogging(void),
   ListLogInfo(FILE *,ExceptionInfo *),
   LogComponentGenesis(void),
-  LogMagickEvent(const LogEventType,const char *,const char *,
-    const size_t,const char *,...) 
+  LogMagickEvent(const LogEventType,const char *,const char *,const size_t,
+    const char *,...) 
     magick_attribute((format (printf,5,6))),
-  LogMagickEventList(const LogEventType,const char *,const char *,
-    const size_t,const char *,va_list)
-    magick_attribute((format (printf,5,0)));
+  LogMagickEventList(const LogEventType,const char *,const char *,const size_t,
+    const char *,va_list) magick_attribute((format (printf,5,0)));
 
 extern MagickExport void
   CloseMagickLog(void),
diff --git a/magick/mac.h b/magick/mac.h
index 8f92bfc..f851020 100644
--- a/magick/mac.h
+++ b/magick/mac.h
@@ -43,7 +43,7 @@
   int
     d_VRefNum;
 
-  ssize_t int
+  long
     d_DirID;
 
   int
@@ -93,14 +93,14 @@
 extern MagickExport DIR
   *opendir(const char *);
 
-extern MagickExport ssize_t
+extern MagickExport long
   telldir(DIR *);
 
 extern MagickExport struct dirent
   *readdir(DIR *);
 
 extern MagickExport void
-  seekdir(DIR *,ssize_t),
+  seekdir(DIR *,long
   closedir(DIR *);
 #endif
 
diff --git a/magick/magick-config.h b/magick/magick-config.h
index bf4fdb8..699410c 100644
--- a/magick/magick-config.h
+++ b/magick/magick-config.h
@@ -9,10 +9,14 @@
 /* #undef AC_APPLE_UNIVERSAL_BUILD */
 
 /* Define if you have AUTOTRACE library */
-/* #undef AUTOTRACE_DELEGATE */
+#ifndef MAGICKCORE_AUTOTRACE_DELEGATE
+#define MAGICKCORE_AUTOTRACE_DELEGATE 1
+#endif
 
 /* Define if coders and filters are to be built as modules. */
-/* #undef BUILD_MODULES */
+#ifndef MAGICKCORE_BUILD_MODULES
+#define MAGICKCORE_BUILD_MODULES 1
+#endif
 
 /* Define if you have the bzip2 library */
 #ifndef MAGICKCORE_BZLIB_DELEGATE
@@ -109,7 +113,9 @@
 /* #undef GS_DELEGATE */
 
 /* Define if you have GVC library */
-/* #undef GVC_DELEGATE */
+#ifndef MAGICKCORE_GVC_DELEGATE
+#define MAGICKCORE_GVC_DELEGATE 1
+#endif
 
 /* Define to 1 if you have the `argz_add' function. */
 #ifndef MAGICKCORE_HAVE_ARGZ_ADD
@@ -190,7 +196,9 @@
 #endif
 
 /* Define to 1 if you have the <CL/cl.h> header file. */
-/* #undef HAVE_CL_CL_H */
+#ifndef MAGICKCORE_HAVE_CL_CL_H
+#define MAGICKCORE_HAVE_CL_CL_H 1
+#endif
 
 /* Define to 1 if you have the <complex.h> header file. */
 #ifndef MAGICKCORE_HAVE_COMPLEX_H
@@ -1026,7 +1034,9 @@
 #endif
 
 /* Define if you have JBIG library */
-/* #undef JBIG_DELEGATE */
+#ifndef MAGICKCORE_JBIG_DELEGATE
+#define MAGICKCORE_JBIG_DELEGATE 1
+#endif
 
 /* Define if you have JPEG version 2 "Jasper" library */
 #ifndef MAGICKCORE_JP2_DELEGATE
@@ -1055,7 +1065,9 @@
 #endif
 
 /* Define if you have LQR library */
-/* #undef LQR_DELEGATE */
+#ifndef MAGICKCORE_LQR_DELEGATE
+#define MAGICKCORE_LQR_DELEGATE 1
+#endif
 
 /* Define if using libltdl to support dynamically loadable modules */
 #ifndef MAGICKCORE_LTDL_DELEGATE
@@ -1067,7 +1079,7 @@
 
 /* Define to the system default library search path. */
 #ifndef MAGICKCORE_LT_DLSEARCH_PATH
-#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/alliance/lib:/usr/lib64/atlas:/usr/lib64/kicad:/usr/lib64/llvm:/usr/lib64/mysql:/usr/lib64/octave-3.2.4:/usr/lib64/openmotif:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib64/tcl8.5:/usr/lib64/wine/:/usr/lib64/xulrunner-1.9.2"
+#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/alliance/lib:/usr/lib64/atlas:/usr/lib64/kicad:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/octave-3.2.4:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib64/tcl8.5:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-1.9.2"
 #endif
 
 /* The archive extension */
@@ -1108,7 +1120,9 @@
 /* #undef NO_MINUS_C_MINUS_O */
 
 /* Define if you have OPENEXR library */
-/* #undef OPENEXR_DELEGATE */
+#ifndef MAGICKCORE_OPENEXR_DELEGATE
+#define MAGICKCORE_OPENEXR_DELEGATE 1
+#endif
 
 /* Define to the address where bug reports for this package should be sent. */
 #ifndef MAGICKCORE_PACKAGE_BUGREPORT
@@ -1360,7 +1374,9 @@
 /* #undef _MINIX */
 
 /* Define this for the OpenCL Accelerator */
-/* #undef _OPENCL */
+#ifndef MAGICKCORE__OPENCL
+#define MAGICKCORE__OPENCL 1
+#endif
 
 /* Define to 2 if the system does not provide POSIX.1 features except with
    this defined. */
diff --git a/magick/magick-type.h b/magick/magick-type.h
index a50d77e..fe9f677 100644
--- a/magick/magick-type.h
+++ b/magick/magick-type.h
@@ -91,7 +91,7 @@
 #define MaxMap  65535UL
 
 #define MAGICKCORE_HDRI_SUPPORT  1
-typedef ssize_t double MagickRealType;
+typedef long double MagickRealType;
 typedef double Quantum;
 #define QuantumRange  18446744073709551615.0
 #define QuantumFormat  "%g"
diff --git a/magick/matrix.h b/magick/matrix.h
index 51917b1..4d101c2 100644
--- a/magick/matrix.h
+++ b/magick/matrix.h
@@ -27,12 +27,11 @@
   **RelinquishMagickMatrix(double **,const size_t);
 
 extern MagickExport MagickBooleanType
-  GaussJordanElimination(double **,double **,const size_t,
-       const size_t);
+  GaussJordanElimination(double **,double **,const size_t,const size_t);
 
 extern MagickExport void
   LeastSquaresAddTerms(double **,double **,const double *,const double *,
-       const size_t, const size_t);
+    const size_t, const size_t);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/magick/morphology-private.h b/magick/morphology-private.h
index e7f98e5..0072c7f 100644
--- a/magick/morphology-private.h
+++ b/magick/morphology-private.h
@@ -30,7 +30,7 @@
 
 extern MagickExport Image
   *MorphologyApply(const Image *,const ChannelType,const MorphologyMethod,
-    const ssize_t, const KernelInfo *, const CompositeOperator, const double,
+    const ssize_t,const KernelInfo *,const CompositeOperator,const double,
     ExceptionInfo *);
 
 extern MagickExport void
diff --git a/magick/option.h b/magick/option.h
index 3ccbc90..847c3b1 100644
--- a/magick/option.h
+++ b/magick/option.h
@@ -131,10 +131,6 @@
   *GetImageOption(const ImageInfo *,const char *),
   *MagickOptionToMnemonic(const MagickOption,const ssize_t);
 
-extern MagickExport ssize_t
-  ParseChannelOption(const char *),
-  ParseMagickOption(const MagickOption,const MagickBooleanType,const char *);
-
 extern MagickExport MagickBooleanType
   CloneImageOptions(ImageInfo *,const ImageInfo *),
   DefineImageOption(ImageInfo *,const char *),
@@ -143,6 +139,10 @@
   ListMagickOptions(FILE *,const MagickOption,ExceptionInfo *),
   SetImageOption(ImageInfo *,const char *,const char *);
 
+extern MagickExport ssize_t
+  ParseChannelOption(const char *),
+  ParseMagickOption(const MagickOption,const MagickBooleanType,const char *);
+
 extern MagickExport void
   DestroyImageOptions(ImageInfo *),
   ResetImageOptions(const ImageInfo *),
diff --git a/magick/paint.h b/magick/paint.h
index e4ca457..3675c08 100644
--- a/magick/paint.h
+++ b/magick/paint.h
@@ -30,7 +30,8 @@
 
 extern MagickExport MagickBooleanType
   FloodfillPaintImage(Image *,const ChannelType,const DrawInfo *,
-    const MagickPixelPacket *,const ssize_t,const ssize_t,const MagickBooleanType),
+    const MagickPixelPacket *,const ssize_t,const ssize_t,
+    const MagickBooleanType),
   GradientImage(Image *,const GradientType,const SpreadMethod,
     const PixelPacket *,const PixelPacket *),
   OpaquePaintImage(Image *,const MagickPixelPacket *,const MagickPixelPacket *,
diff --git a/magick/resize.h b/magick/resize.h
index 759cd1a..8e1bc25 100644
--- a/magick/resize.h
+++ b/magick/resize.h
@@ -23,24 +23,19 @@
 #endif
 
 extern MagickExport Image
-  *AdaptiveResizeImage(const Image *,const size_t,const size_t,
-    ExceptionInfo *),
-  *LiquidRescaleImage(const Image *,const size_t,const size_t,
-    const double,const double,ExceptionInfo *),
+  *AdaptiveResizeImage(const Image *,const size_t,const size_t,ExceptionInfo *),
+  *LiquidRescaleImage(const Image *,const size_t,const size_t,const double,
+    const double,ExceptionInfo *),
   *MagnifyImage(const Image *,ExceptionInfo *),
   *MinifyImage(const Image *,ExceptionInfo *),
   *ResampleImage(const Image *,const double,const double,const FilterTypes,
     const double,ExceptionInfo *),
-  *ResizeImage(const Image *,const size_t,const size_t,
-    const FilterTypes,const double,ExceptionInfo *),
-  *SampleImage(const Image *,const size_t,const size_t,
-    ExceptionInfo *),
-  *ScaleImage(const Image *,const size_t,const size_t,
-    ExceptionInfo *),
-  *ThumbnailImage(const Image *,const size_t,const size_t,
-    ExceptionInfo *),
-  *ZoomImage(const Image *,const size_t,const size_t,
-    ExceptionInfo *);
+  *ResizeImage(const Image *,const size_t,const size_t,const FilterTypes,
+    const double,ExceptionInfo *),
+  *SampleImage(const Image *,const size_t,const size_t,ExceptionInfo *),
+  *ScaleImage(const Image *,const size_t,const size_t,ExceptionInfo *),
+  *ThumbnailImage(const Image *,const size_t,const size_t,ExceptionInfo *),
+  *ZoomImage(const Image *,const size_t,const size_t,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/magick/statistic.h b/magick/statistic.h
index 2aea0ae..3e0d617 100644
--- a/magick/statistic.h
+++ b/magick/statistic.h
@@ -91,16 +91,15 @@
     ExceptionInfo *),
   FunctionImageChannel(Image *,const ChannelType,const MagickFunction,
     const size_t,const double *,ExceptionInfo *),
-  GetImageChannelExtrema(const Image *,const ChannelType,size_t *,
-    size_t *,ExceptionInfo *),
+  GetImageChannelExtrema(const Image *,const ChannelType,size_t *,size_t *,
+    ExceptionInfo *),
   GetImageChannelMean(const Image *,const ChannelType,double *,double *,
     ExceptionInfo *),
   GetImageChannelKurtosis(const Image *,const ChannelType,double *,double *,
     ExceptionInfo *),
   GetImageChannelRange(const Image *,const ChannelType,double *,double *,
     ExceptionInfo *),
-  GetImageExtrema(const Image *,size_t *,size_t *,
-    ExceptionInfo *),
+  GetImageExtrema(const Image *,size_t *,size_t *,ExceptionInfo *),
   GetImageRange(const Image *,double *,double *,ExceptionInfo *),
   GetImageMean(const Image *,double *,double *,ExceptionInfo *),
   GetImageKurtosis(const Image *,double *,double *,ExceptionInfo *);
diff --git a/magick/string-private.h b/magick/string-private.h
index 9dbd4e5..6f92374 100644
--- a/magick/string-private.h
+++ b/magick/string-private.h
@@ -68,7 +68,7 @@
 
 static inline size_t StringToUnsignedLong(const char *value)
 {
-  return(strtoul(value,(char **) NULL,10));
+  return((size_t) strtoul(value,(char **) NULL,10));
 }
 
 #if defined(__cplusplus) || defined(c_plusplus)
diff --git a/magick/string_.h b/magick/string_.h
index df0b780..a43f850 100644
--- a/magick/string_.h
+++ b/magick/string_.h
@@ -35,9 +35,7 @@
     *datum;
 
   size_t
-    length;
-
-  size_t
+    length,
     signature;
 } StringInfo;
 
@@ -64,14 +62,6 @@
   LocaleCompare(const char *,const char *),
   LocaleNCompare(const char *,const char *,const size_t);
 
-extern MagickExport ssize_t
-  FormatMagickSize(const MagickSizeType,const MagickBooleanType,char *),
-  FormatMagickString(char *,const size_t,const char *,...)
-    magick_attribute((format (printf,3,4))),
-  FormatMagickStringList(char *,const size_t,const char *,va_list)
-    magick_attribute((format (printf,3,0))),
-  FormatMagickTime(const time_t,const size_t,char *);
-
 extern MagickExport MagickBooleanType
   ConcatenateString(char **,const char *),
   SubstituteString(char **,const char *,const char *);
@@ -83,6 +73,14 @@
     magick_attribute((nonnull)),
   GetStringInfoLength(const StringInfo *);
 
+extern MagickExport ssize_t
+  FormatMagickSize(const MagickSizeType,const MagickBooleanType,char *),
+  FormatMagickString(char *,const size_t,const char *,...)
+    magick_attribute((format (printf,3,4))),
+  FormatMagickStringList(char *,const size_t,const char *,va_list)
+    magick_attribute((format (printf,3,0))),
+  FormatMagickTime(const time_t,const size_t,char *);
+
 extern MagickExport StringInfo
   *AcquireStringInfo(const size_t),
   *CloneStringInfo(const StringInfo *),
diff --git a/magick/threshold.h b/magick/threshold.h
index 6719480..fd0b32b 100644
--- a/magick/threshold.h
+++ b/magick/threshold.h
@@ -26,8 +26,8 @@
   ThresholdMap;
 
 extern MagickExport Image
-  *AdaptiveThresholdImage(const Image *,const size_t,const size_t,
-    const ssize_t,ExceptionInfo *);
+  *AdaptiveThresholdImage(const Image *,const size_t,const size_t,const ssize_t,
+    ExceptionInfo *);
 
 extern MagickExport ThresholdMap
   *DestroyThresholdMap(ThresholdMap *),
diff --git a/magick/token-private.h b/magick/token-private.h
index 67cfb73..b3c15d5 100644
--- a/magick/token-private.h
+++ b/magick/token-private.h
@@ -30,7 +30,7 @@
 
 typedef struct
 {
-  ssize_t
+  int
     code_mask,
     code_value,
     utf_mask,
@@ -89,15 +89,15 @@
   return(utf8);
 }
 
-static inline ssize_t GetNextUTFCode(const char *text,size_t *octets)
+static inline int GetNextUTFCode(const char *text,unsigned int *octets)
 {
-  ssize_t
+  int
     code;
 
   register ssize_t
     i;
 
-  register ssize_t
+  register int
     c,
     unicode;
 
@@ -107,7 +107,7 @@
       errno=EINVAL;
       return(-1);
     }
-  code=(ssize_t) (*text++) & 0xff;
+  code=(int) (*text++) & 0xff;
   unicode=code;
   for (i=0; i < MaxMultibyteCodes; i++)
   {
@@ -119,10 +119,10 @@
             errno=EILSEQ;
             return(-1);
           }
-        *octets=(size_t) (i+1);
+        *octets=(unsigned int) (i+1);
         return(unicode);
       }
-    c=(ssize_t) (*text++ ^ 0x80) & 0xff;
+    c=(int) (*text++ ^ 0x80) & 0xff;
     if ((c & 0xc0) != 0)
       {
         errno=EILSEQ;
@@ -134,24 +134,24 @@
   return(-1);
 }
 
-static inline ssize_t GetUTFCode(const char *text)
+static inline int GetUTFCode(const char *text)
 {
-  size_t
+  unsigned int
     octets;
 
   return(GetNextUTFCode(text,&octets));
 }
 
-static inline size_t GetUTFOctets(const char *text)
+static inline unsigned int GetUTFOctets(const char *text)
 {
-  size_t
+  unsigned int
     octets;
 
   (void) GetNextUTFCode(text,&octets);
   return(octets);
 }
 
-static inline MagickBooleanType IsUTFSpace(ssize_t code)
+static inline MagickBooleanType IsUTFSpace(int code)
 {
   if (((code >= 0x0009) && (code <= 0x000d)) || (code == 0x0020) ||
       (code == 0x0085) || (code == 0x00a0) || (code == 0x1680) ||
@@ -162,24 +162,24 @@
   return(MagickFalse);
 }
 
-static inline MagickBooleanType IsUTFValid(ssize_t code)
+static inline MagickBooleanType IsUTFValid(int code)
 {
-  ssize_t
+  int
     mask;
 
-  mask=(ssize_t) 0x7fffffff;
+  mask=(int) 0x7fffffff;
   if (((code & ~mask) != 0) && ((code < 0xd800) || (code > 0xdfff)) &&
       (code != 0xfffe) && (code != 0xffff))
     return(MagickFalse);
   return(MagickTrue);
 }
 
-static inline MagickBooleanType IsUTFAscii(ssize_t code)
+static inline MagickBooleanType IsUTFAscii(int code)
 {
-  ssize_t
+  int
     mask;
 
-  mask=(ssize_t) 0x7f;
+  mask=(int) 0x7f;
   if ((code & ~mask) != 0)
     return(MagickFalse);
   return(MagickTrue);
diff --git a/magick/utility.h b/magick/utility.h
index 2503137..619628c 100644
--- a/magick/utility.h
+++ b/magick/utility.h
@@ -47,9 +47,6 @@
   SystemCommand(const MagickBooleanType,const MagickBooleanType,const char *,
     ExceptionInfo *);
 
-extern MagickExport ssize_t
-  GetMagickPageSize(void);
-
 extern MagickExport MagickBooleanType
   AcquireUniqueFilename(char *),
   AcquireUniqueSymbolicLink(const char *,char *),
@@ -59,12 +56,15 @@
   IsMagickTrue(const char *),
   IsPathAccessible(const char *);
 
-extern MagickExport unsigned char
-  *Base64Decode(const char *, size_t *);
-
 extern MagickExport size_t
   MultilineCensus(const char *);
 
+extern MagickExport ssize_t
+  GetMagickPageSize(void);
+
+extern MagickExport unsigned char
+  *Base64Decode(const char *, size_t *);
+
 extern MagickExport void
   AppendImageFormat(const char *,char *),
   ChopPathComponents(char *,const size_t),
diff --git a/magick/version.h b/magick/version.h
index 8bea494..8c39f3c 100644
--- a/magick/version.h
+++ b/magick/version.h
@@ -33,8 +33,8 @@
 #define MagickLibAddendum  "-1"
 #define MagickLibInterface  3
 #define MagickLibMinInterface  3
-#define MagickReleaseDate  "2010-05-29"
-#define MagickChangeDate   "20100525"
+#define MagickReleaseDate  "2010-05-30"
+#define MagickChangeDate   "20100528"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #define MagickHomeURL  "file:///usr/local/share/doc/ImageMagick-6.6.2/index.html"
 #if (MAGICKCORE_QUANTUM_DEPTH == 8)
diff --git a/magick/vms.h b/magick/vms.h
index f8cf037..bd24a5f 100644
--- a/magick/vms.h
+++ b/magick/vms.h
@@ -949,7 +949,7 @@
 
 typedef struct _dirdesc
 {
-  ssize_t
+  long
     context;
 
   char
diff --git a/wand/MagickWand.h b/wand/MagickWand.h
index d326cc1..ddfebaf 100644
--- a/wand/MagickWand.h
+++ b/wand/MagickWand.h
@@ -147,9 +147,6 @@
 extern WandExport ExceptionType
   MagickGetExceptionType(const MagickWand *);
 
-extern WandExport ssize_t
-  MagickGetIteratorIndex(MagickWand *);
-
 extern WandExport MagickBooleanType
   IsMagickWand(const MagickWand *),
   MagickClearException(MagickWand *),
@@ -161,6 +158,9 @@
   *NewMagickWand(void),
   *NewMagickWandFromImage(const Image *);
 
+extern WandExport ssize_t
+  MagickGetIteratorIndex(MagickWand *);
+
 extern WandExport void
   ClearMagickWand(MagickWand *),
   MagickWandGenesis(void),
diff --git a/wand/animate.c b/wand/animate.c
index 07a074e..c7286cf 100644
--- a/wand/animate.c
+++ b/wand/animate.c
@@ -274,10 +274,6 @@
   ImageStack
     image_stack[MaxImageStackDepth+1];
 
-  ssize_t
-    j,
-    k;
-
   MagickBooleanType
     fire,
     pend;
@@ -291,6 +287,10 @@
   register ssize_t
     i;
 
+  ssize_t
+    j,
+    k;
+
   XResourceInfo
     resource_info;
 
diff --git a/wand/drawing-wand.c b/wand/drawing-wand.c
index 7b20033..6be9873 100644
--- a/wand/drawing-wand.c
+++ b/wand/drawing-wand.c
@@ -6503,15 +6503,15 @@
 %    o y2: bottom y ordinate
 %
 */
-WandExport void DrawSetViewbox(DrawingWand *wand,size_t x1,
-  size_t y1,size_t x2,size_t y2)
+WandExport void DrawSetViewbox(DrawingWand *wand,ssize_t x1,ssize_t y1,
+  ssize_t x2,ssize_t y2)
 {
   assert(wand != (DrawingWand *) NULL);
   assert(wand->signature == WandSignature);
   if (wand->debug != MagickFalse)
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
-  (void) MvgPrintf(wand,"viewbox %lu %lu %lu %lu\n",(unsigned long) x1,
-    (unsigned long) y1,(unsigned long) x2,(unsigned long) y2);
+  (void) MvgPrintf(wand,"viewbox %ld %ld %ld %ld\n",(long) x1,(long) y1,
+    (long) x2,(long) y2);
 }
 
 /*
diff --git a/wand/drawing-wand.h b/wand/drawing-wand.h
index e1af4e6..a0258f9 100644
--- a/wand/drawing-wand.h
+++ b/wand/drawing-wand.h
@@ -204,8 +204,7 @@
   DrawSetTextDecoration(DrawingWand *,const DecorationType),
   DrawSetTextEncoding(DrawingWand *,const char *),
   DrawSetTextUnderColor(DrawingWand *,const PixelWand *),
-  DrawSetViewbox(DrawingWand *,size_t,size_t,size_t,
-    size_t),
+  DrawSetViewbox(DrawingWand *,ssize_t,ssize_t,ssize_t,ssize_t),
   DrawSkewX(DrawingWand *,const double),
   DrawSkewY(DrawingWand *,const double),
   DrawTranslate(DrawingWand *,const double,const double);
diff --git a/wand/magick-image.c b/wand/magick-image.c
index ee98cde..d167166 100644
--- a/wand/magick-image.c
+++ b/wand/magick-image.c
@@ -2176,8 +2176,7 @@
 %  The format of the MagickCropImage method is:
 %
 %      MagickBooleanType MagickCropImage(MagickWand *wand,
-%        const size_t width,const size_t height,const ssize_t x,
-%        const ssize_t y)
+%        const size_t width,const size_t height,const ssize_t x,const ssize_t y)
 %
 %  A description of each parameter follows:
 %
@@ -2193,8 +2192,7 @@
 %
 */
 WandExport MagickBooleanType MagickCropImage(MagickWand *wand,
-  const size_t width,const size_t height,const ssize_t x,
-  const ssize_t y)
+  const size_t width,const size_t height,const ssize_t x,const ssize_t y)
 {
   Image
     *crop_image;
diff --git a/wand/magick-image.h b/wand/magick-image.h
index 4edc373..665e35f 100644
--- a/wand/magick-image.h
+++ b/wand/magick-image.h
@@ -74,13 +74,12 @@
   MagickAdaptiveBlurImage(MagickWand *,const double,const double),
   MagickAdaptiveBlurImageChannel(MagickWand *,const ChannelType,const double,
     const double),
-  MagickAdaptiveResizeImage(MagickWand *,const size_t,
-    const size_t),
+  MagickAdaptiveResizeImage(MagickWand *,const size_t,const size_t),
   MagickAdaptiveSharpenImage(MagickWand *,const double,const double),
   MagickAdaptiveSharpenImageChannel(MagickWand *,const ChannelType,const double,
     const double),
-  MagickAdaptiveThresholdImage(MagickWand *,const size_t,
-    const size_t,const ssize_t),
+  MagickAdaptiveThresholdImage(MagickWand *,const size_t,const size_t,
+    const ssize_t),
   MagickAddImage(MagickWand *,const MagickWand *),
   MagickAddNoiseImage(MagickWand *,const NoiseType),
   MagickAddNoiseImageChannel(MagickWand *,const ChannelType,const NoiseType),
@@ -97,14 +96,13 @@
   MagickBlurImage(MagickWand *,const double,const double),
   MagickBlurImageChannel(MagickWand *,const ChannelType,const double,
     const double),
-  MagickBorderImage(MagickWand *,const PixelWand *,const size_t,
-    const size_t),
+  MagickBorderImage(MagickWand *,const PixelWand *,const size_t,const size_t),
   MagickBrightnessContrastImage(MagickWand *,const double,const double),
   MagickBrightnessContrastImageChannel(MagickWand *,const ChannelType,
     const double,const double),
   MagickCharcoalImage(MagickWand *,const double,const double),
-  MagickChopImage(MagickWand *,const size_t,const size_t,
-    const ssize_t,const ssize_t),
+  MagickChopImage(MagickWand *,const size_t,const size_t,const ssize_t,
+    const ssize_t),
   MagickClampImage(MagickWand *),
   MagickClampImageChannel(MagickWand *,const ChannelType),
   MagickClipImage(MagickWand *),
@@ -118,8 +116,8 @@
   MagickCompositeImage(MagickWand *,const MagickWand *,const CompositeOperator,
     const ssize_t,const ssize_t),
   MagickCompositeImageChannel(MagickWand *,const ChannelType,const MagickWand *,    const CompositeOperator,const ssize_t,const ssize_t),
-  MagickConstituteImage(MagickWand *,const size_t,const size_t,
-    const char *,const StorageType,const void *),
+  MagickConstituteImage(MagickWand *,const size_t,const size_t,const char *,
+    const StorageType,const void *),
   MagickContrastImage(MagickWand *,const MagickBooleanType),
   MagickContrastStretchImage(MagickWand *,const double,const double),
   MagickContrastStretchImageChannel(MagickWand *,const ChannelType,const double,
@@ -127,8 +125,8 @@
   MagickConvolveImage(MagickWand *,const size_t,const double *),
   MagickConvolveImageChannel(MagickWand *,const ChannelType,const size_t,
     const double *),
-  MagickCropImage(MagickWand *,const size_t,const size_t,
-    const ssize_t,const ssize_t),
+  MagickCropImage(MagickWand *,const size_t,const size_t,const ssize_t,
+    const ssize_t),
   MagickCycleColormapImage(MagickWand *,const ssize_t),
   MagickDecipherImage(MagickWand *,const char *),
   MagickDeskewImage(MagickWand *,const double),
@@ -148,10 +146,9 @@
   MagickEvaluateImageChannel(MagickWand *,const ChannelType,
     const MagickEvaluateOperator,const double),
   MagickExportImagePixels(MagickWand *,const ssize_t,const ssize_t,
-    const size_t,const size_t,const char *,const StorageType,
-    void *),
-  MagickExtentImage(MagickWand *,const size_t,const size_t,
-    const ssize_t,const ssize_t),
+    const size_t,const size_t,const char *,const StorageType,void *),
+  MagickExtentImage(MagickWand *,const size_t,const size_t,const ssize_t,
+    const ssize_t),
   MagickFilterImage(MagickWand *,const KernelInfo *),
   MagickFilterImageChannel(MagickWand *,const ChannelType,const KernelInfo *),
   MagickFlipImage(MagickWand *),
@@ -160,8 +157,8 @@
     const MagickBooleanType),
   MagickFlopImage(MagickWand *),
   MagickForwardFourierTransformImage(MagickWand *,const MagickBooleanType),
-  MagickFrameImage(MagickWand *,const PixelWand *,const size_t,
-    const size_t,const ssize_t,const ssize_t),
+  MagickFrameImage(MagickWand *,const PixelWand *,const size_t,const size_t,
+    const ssize_t,const ssize_t),
   MagickFunctionImage(MagickWand *,const MagickFunction,const size_t,
     const double *),
   MagickFunctionImageChannel(MagickWand *,const ChannelType,
@@ -189,7 +186,8 @@
   MagickGetImageLength(MagickWand *,MagickSizeType *),
   MagickGetImagePage(MagickWand *,size_t *,size_t *,ssize_t *,
     ssize_t *),
-  MagickGetImagePixelColor(MagickWand *,const ssize_t,const ssize_t,PixelWand *),
+  MagickGetImagePixelColor(MagickWand *,const ssize_t,const ssize_t,
+    PixelWand *),
   MagickGetImageRange(MagickWand *,double *,double *),
   MagickGetImageRedPrimary(MagickWand *,double *,double *),
   MagickGetImageResolution(MagickWand *,double *,double *),
@@ -199,9 +197,8 @@
   MagickHasNextImage(MagickWand *),
   MagickHasPreviousImage(MagickWand *),
   MagickImplodeImage(MagickWand *,const double),
-  MagickImportImagePixels(MagickWand *,const ssize_t,const ssize_t,
-    const size_t,const size_t,const char *,const StorageType,
-    const void *),
+  MagickImportImagePixels(MagickWand *,const ssize_t,const ssize_t,const size_t,
+    const size_t,const char *,const StorageType,const void *),
   MagickInverseFourierTransformImage(MagickWand *,MagickWand *,
     const MagickBooleanType),
   MagickLabelImage(MagickWand *,const char *),
@@ -209,13 +206,14 @@
   MagickLevelImageChannel(MagickWand *,const ChannelType,const double,
     const double,const double),
   MagickLinearStretchImage(MagickWand *,const double,const double),
-  MagickLiquidRescaleImage(MagickWand *,const size_t,const size_t,
-    const double,const double),
+  MagickLiquidRescaleImage(MagickWand *,const size_t,const size_t,const double,
+    const double),
   MagickMagnifyImage(MagickWand *),
   MagickMedianFilterImage(MagickWand *,const double),
   MagickMinifyImage(MagickWand *),
   MagickModulateImage(MagickWand *,const double,const double,const double),
-  MagickMorphologyImage(MagickWand *,MorphologyMethod,const ssize_t,KernelInfo *),
+  MagickMorphologyImage(MagickWand *,MorphologyMethod,const ssize_t,
+    KernelInfo *),
   MagickMorphologyImageChannel(MagickWand *,const ChannelType,MorphologyMethod,
     const ssize_t,KernelInfo *),
   MagickMotionBlurImage(MagickWand *,const double,const double,const double),
@@ -224,8 +222,7 @@
   MagickNegateImage(MagickWand *,const MagickBooleanType),
   MagickNegateImageChannel(MagickWand *,const ChannelType,
     const MagickBooleanType),
-  MagickNewImage(MagickWand *,const size_t,const size_t,
-    const PixelWand *),
+  MagickNewImage(MagickWand *,const size_t,const size_t,const PixelWand *),
   MagickNextImage(MagickWand *),
   MagickNormalizeImage(MagickWand *),
   MagickNormalizeImageChannel(MagickWand *,const ChannelType),
@@ -243,8 +240,7 @@
   MagickPingImageBlob(MagickWand *,const void *,const size_t),
   MagickPingImageFile(MagickWand *,FILE *),
   MagickPolaroidImage(MagickWand *,const DrawingWand *,const double),
-  MagickPosterizeImage(MagickWand *,const size_t,
-    const MagickBooleanType),
+  MagickPosterizeImage(MagickWand *,const size_t,const MagickBooleanType),
   MagickPreviousImage(MagickWand *),
   MagickQuantizeImage(MagickWand *,const size_t,const ColorspaceType,
     const size_t,const MagickBooleanType,const MagickBooleanType),
@@ -252,8 +248,8 @@
     const size_t,const MagickBooleanType,const MagickBooleanType),
   MagickRadialBlurImage(MagickWand *,const double),
   MagickRadialBlurImageChannel(MagickWand *,const ChannelType,const double),
-  MagickRaiseImage(MagickWand *,const size_t,const size_t,
-    const ssize_t,const ssize_t,const MagickBooleanType),
+  MagickRaiseImage(MagickWand *,const size_t,const size_t,const ssize_t,
+    const ssize_t,const MagickBooleanType),
   MagickRandomThresholdImage(MagickWand *,const double,const double),
   MagickRandomThresholdImageChannel(MagickWand *,const ChannelType,const double,
     const double),
@@ -266,8 +262,8 @@
   MagickResampleImage(MagickWand *,const double,const double,const FilterTypes,
     const double),
   MagickResetImagePage(MagickWand *,const char *),
-  MagickResizeImage(MagickWand *,const size_t,const size_t,
-    const FilterTypes,const double),
+  MagickResizeImage(MagickWand *,const size_t,const size_t,const FilterTypes,
+    const double),
   MagickRollImage(MagickWand *,const ssize_t,const ssize_t),
   MagickRotateImage(MagickWand *,const PixelWand *,const double),
   MagickSampleImage(MagickWand *,const size_t,const size_t),
@@ -285,8 +281,7 @@
   MagickSetImageBias(MagickWand *,const double),
   MagickSetImageBluePrimary(MagickWand *,const double,const double),
   MagickSetImageBorderColor(MagickWand *,const PixelWand *),
-  MagickSetImageChannelDepth(MagickWand *,const ChannelType,
-    const size_t),
+  MagickSetImageChannelDepth(MagickWand *,const ChannelType,const size_t),
   MagickSetImageClipMask(MagickWand *,const MagickWand *),
   MagickSetImageColor(MagickWand *,const PixelWand *),
   MagickSetImageColormapColor(MagickWand *,const size_t,
@@ -312,8 +307,8 @@
   MagickSetImageMatteColor(MagickWand *,const PixelWand *),
   MagickSetImageOpacity(MagickWand *,const double),
   MagickSetImageOrientation(MagickWand *,const OrientationType),
-  MagickSetImagePage(MagickWand *,const size_t,const size_t,
-    const ssize_t,const ssize_t),
+  MagickSetImagePage(MagickWand *,const size_t,const size_t,const ssize_t,
+    const ssize_t),
   MagickSetImageRedPrimary(MagickWand *,const double,const double),
   MagickSetImageRenderingIntent(MagickWand *,const RenderingIntent),
   MagickSetImageResolution(MagickWand *,const double,const double),
@@ -339,8 +334,8 @@
   MagickSolarizeImage(MagickWand *,const double),
   MagickSparseColorImage(MagickWand *,const ChannelType,const SparseColorMethod,
     const size_t,const double *),
-  MagickSpliceImage(MagickWand *,const size_t,const size_t,
-    const ssize_t,const ssize_t),
+  MagickSpliceImage(MagickWand *,const size_t,const size_t,const ssize_t,
+    const ssize_t),
   MagickSpreadImage(MagickWand *,const double),
   MagickStripImage(MagickWand *),
   MagickSwirlImage(MagickWand *,const double),
@@ -357,8 +352,8 @@
     const double),
   MagickUnsharpMaskImageChannel(MagickWand *,const ChannelType,const double,
     const double,const double,const double),
-  MagickVignetteImage(MagickWand *,const double,const double,
-    const ssize_t,const ssize_t),
+  MagickVignetteImage(MagickWand *,const double,const double,const ssize_t,
+    const ssize_t),
   MagickWaveImage(MagickWand *,const double,const double),
   MagickWhiteThresholdImage(MagickWand *,const PixelWand *),
   MagickWriteImage(MagickWand *,const char *),
@@ -385,8 +380,8 @@
   *MagickFxImageChannel(MagickWand *,const ChannelType,const char *),
   *MagickGetImage(MagickWand *),
   *MagickGetImageClipMask(MagickWand *),
-  *MagickGetImageRegion(MagickWand *,const size_t,const size_t,
-    const ssize_t,const ssize_t),
+  *MagickGetImageRegion(MagickWand *,const size_t,const size_t,const ssize_t,
+    const ssize_t),
   *MagickMergeImageLayers(MagickWand *,const ImageLayerMethod),
   *MagickMorphImages(MagickWand *,const size_t),
   *MagickMontageImage(MagickWand *,const DrawingWand *,const char *,
@@ -412,10 +407,6 @@
 extern WandExport ResolutionType
   MagickGetImageUnits(MagickWand *);
 
-extern WandExport unsigned char
-  *MagickGetImageBlob(MagickWand *,size_t *),
-  *MagickGetImagesBlob(MagickWand *,size_t *);
-
 extern WandExport size_t
   MagickGetImageColors(MagickWand *),
   MagickGetImageCompressionQuality(MagickWand *),
@@ -429,6 +420,10 @@
   MagickGetImageWidth(MagickWand *),
   MagickGetNumberImages(MagickWand *);
 
+extern WandExport unsigned char
+  *MagickGetImageBlob(MagickWand *,size_t *),
+  *MagickGetImagesBlob(MagickWand *,size_t *);
+
 extern WandExport VirtualPixelMethod
   MagickGetImageVirtualPixelMethod(MagickWand *),
   MagickSetImageVirtualPixelMethod(MagickWand *,const VirtualPixelMethod);
diff --git a/wand/magick-property.h b/wand/magick-property.h
index c399ae6..0865db8 100644
--- a/wand/magick-property.h
+++ b/wand/magick-property.h
@@ -81,8 +81,7 @@
   MagickDeleteImageProperty(MagickWand *,const char *),
   MagickDeleteOption(MagickWand *,const char *),
   MagickGetAntialias(const MagickWand *),
-  MagickGetPage(const MagickWand *,size_t *,size_t *,ssize_t *,
-    ssize_t *),
+  MagickGetPage(const MagickWand *,size_t *,size_t *,ssize_t *,ssize_t *),
   MagickGetSize(const MagickWand *,size_t *,size_t *),
   MagickGetSizeOffset(const MagickWand *,ssize_t *),
   MagickProfileImage(MagickWand *,const char *,const void *,const size_t),
@@ -104,16 +103,15 @@
   MagickSetInterpolateMethod(MagickWand *,const InterpolatePixelMethod),
   MagickSetOption(MagickWand *,const char *,const char *),
   MagickSetOrientation(MagickWand *,const OrientationType),
-  MagickSetPage(MagickWand *,const size_t,const size_t,
-    const ssize_t,const ssize_t),
+  MagickSetPage(MagickWand *,const size_t,const size_t,const ssize_t,
+    const ssize_t),
   MagickSetPassphrase(MagickWand *,const char *),
   MagickSetPointsize(MagickWand *,const double),
   MagickSetResolution(MagickWand *,const double,const double),
   MagickSetResourceLimit(const ResourceType type,const MagickSizeType limit),
   MagickSetSamplingFactors(MagickWand *,const size_t,const double *),
   MagickSetSize(MagickWand *,const size_t,const size_t),
-  MagickSetSizeOffset(MagickWand *,const size_t,const size_t,
-    const ssize_t),
+  MagickSetSizeOffset(MagickWand *,const size_t,const size_t,const ssize_t),
   MagickSetType(MagickWand *,const ImageType);
 
 extern WandExport MagickProgressMonitor
@@ -129,13 +127,13 @@
 extern WandExport OrientationType
   MagickGetOrientationType(MagickWand *);
 
+extern WandExport size_t
+  MagickGetCompressionQuality(MagickWand *);
+
 extern WandExport unsigned char
   *MagickGetImageProfile(MagickWand *,const char *,size_t *),
   *MagickRemoveImageProfile(MagickWand *,const char *,size_t *);
 
-extern WandExport size_t
-  MagickGetCompressionQuality(MagickWand *);
-
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif
diff --git a/wand/pixel-iterator.h b/wand/pixel-iterator.h
index 7a695ee..44d190e 100644
--- a/wand/pixel-iterator.h
+++ b/wand/pixel-iterator.h
@@ -34,9 +34,6 @@
 extern WandExport ExceptionType
   PixelGetIteratorExceptionType(const PixelIterator *);
 
-extern WandExport ssize_t
-  PixelGetIteratorRow(PixelIterator *);
-
 extern WandExport MagickBooleanType
   IsPixelIterator(const PixelIterator *),
   PixelClearIteratorException(PixelIterator *),
@@ -47,14 +44,17 @@
   *ClonePixelIterator(const PixelIterator *),
   *DestroyPixelIterator(PixelIterator *),
   *NewPixelIterator(MagickWand *),
-  *NewPixelRegionIterator(MagickWand *,const ssize_t,const ssize_t,
-    const size_t,const size_t);
+  *NewPixelRegionIterator(MagickWand *,const ssize_t,const ssize_t,const size_t,
+    const size_t);
 
 extern WandExport PixelWand
   **PixelGetCurrentIteratorRow(PixelIterator *,size_t *),
   **PixelGetNextIteratorRow(PixelIterator *,size_t *),
   **PixelGetPreviousIteratorRow(PixelIterator *,size_t *);
 
+extern WandExport ssize_t
+  PixelGetIteratorRow(PixelIterator *);
+
 extern WandExport void
   ClearPixelIterator(PixelIterator *),
   PixelResetIterator(PixelIterator *),
diff --git a/wand/pixel-view.h b/wand/pixel-view.h
index cce9b0a..cf67859 100644
--- a/wand/pixel-view.h
+++ b/wand/pixel-view.h
@@ -36,10 +36,6 @@
 extern WandExport char
   *GetPixelViewException(const PixelView *,ExceptionType *);
 
-extern WandExport ssize_t
-  GetPixelViewX(const PixelView *),
-  GetPixelViewY(const PixelView *);
-
 extern WandExport MagickBooleanType
   DuplexTransferPixelViewIterator(PixelView *,PixelView *,PixelView *,
     DuplexTransferPixelViewMethod,void *),
@@ -57,8 +53,8 @@
   *ClonePixelView(const PixelView *),
   *DestroyPixelView(PixelView *),
   *NewPixelView(MagickWand *),
-  *NewPixelViewRegion(MagickWand *,const ssize_t,const ssize_t,
-    const size_t,const size_t);
+  *NewPixelViewRegion(MagickWand *,const ssize_t,const ssize_t,const size_t,
+    const size_t);
 
 extern WandExport PixelWand
   **GetPixelViewPixels(const PixelView *);
@@ -67,6 +63,10 @@
   GetPixelViewHeight(const PixelView *),
   GetPixelViewWidth(const PixelView *);
 
+extern WandExport ssize_t
+  GetPixelViewX(const PixelView *),
+  GetPixelViewY(const PixelView *);
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif
