diff --git a/MagickCore/colorspace.c b/MagickCore/colorspace.c
index 4387808..b808a63 100644
--- a/MagickCore/colorspace.c
+++ b/MagickCore/colorspace.c
@@ -1818,7 +1818,7 @@
           }
         for (x=0; x < (ssize_t) image->columns; x++)
         {
-          Quantum
+          double
             blue,
             green,
             red;
@@ -1827,9 +1827,9 @@
           saturation=(double) (QuantumScale*GetPixelGreen(image,q));
           brightness=(double) (QuantumScale*GetPixelBlue(image,q));
           ConvertHSBToRGB(hue,saturation,brightness,&red,&green,&blue);
-          SetPixelRed(image,red,q);
-          SetPixelGreen(image,green,q);
-          SetPixelBlue(image,blue,q);
+          SetPixelRed(image,ClampToQuantum(red),q);
+          SetPixelGreen(image,ClampToQuantum(green),q);
+          SetPixelBlue(image,ClampToQuantum(blue),q);
           q+=GetPixelChannels(image);
         }
         sync=SyncCacheViewAuthenticPixels(image_view,exception);
@@ -1884,7 +1884,7 @@
           }
         for (x=0; x < (ssize_t) image->columns; x++)
         {
-          Quantum
+          double
             blue,
             green,
             red;
@@ -1893,9 +1893,9 @@
           saturation=(double) (QuantumScale*GetPixelGreen(image,q));
           lightness=(double) (QuantumScale*GetPixelBlue(image,q));
           ConvertHSLToRGB(hue,saturation,lightness,&red,&green,&blue);
-          SetPixelRed(image,red,q);
-          SetPixelGreen(image,green,q);
-          SetPixelBlue(image,blue,q);
+          SetPixelRed(image,ClampToQuantum(red),q);
+          SetPixelGreen(image,ClampToQuantum(green),q);
+          SetPixelBlue(image,ClampToQuantum(blue),q);
           q+=GetPixelChannels(image);
         }
         sync=SyncCacheViewAuthenticPixels(image_view,exception);
@@ -1950,7 +1950,7 @@
           }
         for (x=0; x < (ssize_t) image->columns; x++)
         {
-          Quantum
+          double
             blue,
             green,
             red;
@@ -1959,9 +1959,9 @@
           whiteness=(double) (QuantumScale*GetPixelGreen(image,q));
           blackness=(double) (QuantumScale*GetPixelBlue(image,q));
           ConvertHWBToRGB(hue,whiteness,blackness,&red,&green,&blue);
-          SetPixelRed(image,red,q);
-          SetPixelGreen(image,green,q);
-          SetPixelBlue(image,blue,q);
+          SetPixelRed(image,ClampToQuantum(red),q);
+          SetPixelGreen(image,ClampToQuantum(green),q);
+          SetPixelBlue(image,ClampToQuantum(blue),q);
           q+=GetPixelChannels(image);
         }
         sync=SyncCacheViewAuthenticPixels(image_view,exception);
diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c
index 741778b..2ebe940 100644
--- a/MagickCore/enhance.c
+++ b/MagickCore/enhance.c
@@ -837,7 +837,7 @@
 %
 */
 
-static void Contrast(const int sign,Quantum *red,Quantum *green,Quantum *blue)
+static void Contrast(const int sign,double *red,double *green,double *blue)
 {
   double
     brightness,
@@ -847,9 +847,9 @@
   /*
     Enhance contrast: dark color become darker, light color become lighter.
   */
-  assert(red != (Quantum *) NULL);
-  assert(green != (Quantum *) NULL);
-  assert(blue != (Quantum *) NULL);
+  assert(red != (double *) NULL);
+  assert(green != (double *) NULL);
+  assert(blue != (double *) NULL);
   hue=0.0;
   saturation=0.0;
   brightness=0.0;
@@ -912,7 +912,7 @@
 #endif
   for (y=0; y < (ssize_t) image->rows; y++)
   {
-    Quantum
+    double
       blue,
       green,
       red;
@@ -2659,8 +2659,8 @@
 */
 
 static void ModulateHSB(const double percent_hue,
-  const double percent_saturation,const double percent_brightness,
-  Quantum *red,Quantum *green,Quantum *blue)
+  const double percent_saturation,const double percent_brightness,double *red,
+  double *green,double *blue)
 {
   double
     brightness,
@@ -2670,9 +2670,9 @@
   /*
     Increase or decrease color brightness, saturation, or hue.
   */
-  assert(red != (Quantum *) NULL);
-  assert(green != (Quantum *) NULL);
-  assert(blue != (Quantum *) NULL);
+  assert(red != (double *) NULL);
+  assert(green != (double *) NULL);
+  assert(blue != (double *) NULL);
   ConvertRGBToHSB(*red,*green,*blue,&hue,&saturation,&brightness);
   hue+=0.5*(0.01*percent_hue-1.0);
   while (hue < 0.0)
@@ -2685,8 +2685,8 @@
 }
 
 static void ModulateHSL(const double percent_hue,
-  const double percent_saturation,const double percent_lightness,
-  Quantum *red,Quantum *green,Quantum *blue)
+  const double percent_saturation,const double percent_lightness,double *red,
+  double *green,double *blue)
 {
   double
     hue,
@@ -2696,9 +2696,9 @@
   /*
     Increase or decrease color lightness, saturation, or hue.
   */
-  assert(red != (Quantum *) NULL);
-  assert(green != (Quantum *) NULL);
-  assert(blue != (Quantum *) NULL);
+  assert(red != (double *) NULL);
+  assert(green != (double *) NULL);
+  assert(blue != (double *) NULL);
   ConvertRGBToHSL(*red,*green,*blue,&hue,&saturation,&lightness);
   hue+=0.5*(0.01*percent_hue-1.0);
   while (hue < 0.0)
@@ -2710,7 +2710,7 @@
   ConvertHSLToRGB(hue,saturation,lightness,red,green,blue);
 }
 
-static void ModulateHWB(const double percent_hue,const double percent_whiteness,  const double percent_blackness,Quantum *red,Quantum *green,Quantum *blue)
+static void ModulateHWB(const double percent_hue,const double percent_whiteness,  const double percent_blackness,double *red,double *green,double *blue)
 {
   double
     blackness,
@@ -2720,9 +2720,9 @@
   /*
     Increase or decrease color blackness, whiteness, or hue.
   */
-  assert(red != (Quantum *) NULL);
-  assert(green != (Quantum *) NULL);
-  assert(blue != (Quantum *) NULL);
+  assert(red != (double *) NULL);
+  assert(green != (double *) NULL);
+  assert(blue != (double *) NULL);
   ConvertRGBToHWB(*red,*green,*blue,&hue,&whiteness,&blackness);
   hue+=0.5*(0.01*percent_hue-1.0);
   while (hue < 0.0)
@@ -2839,7 +2839,7 @@
 #endif
   for (y=0; y < (ssize_t) image->rows; y++)
   {
-    Quantum
+    double
       blue,
       green,
       red;
@@ -2885,9 +2885,9 @@
           break;
         }
       }
-      SetPixelRed(image,red,q);
-      SetPixelGreen(image,green,q);
-      SetPixelBlue(image,blue,q);
+      SetPixelRed(image,ClampToQuantum(red),q);
+      SetPixelGreen(image,ClampToQuantum(green),q);
+      SetPixelBlue(image,ClampToQuantum(blue),q);
       q+=GetPixelChannels(image);
     }
     if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
diff --git a/MagickCore/gem-private.h b/MagickCore/gem-private.h
index bee0486..3125024 100644
--- a/MagickCore/gem-private.h
+++ b/MagickCore/gem-private.h
@@ -32,13 +32,13 @@
   GetOptimalKernelWidth2D(const double,const double);
 
 extern MagickPrivate void
-  ConvertHSBToRGB(const double,const double,const double,Quantum *,Quantum *,
-    Quantum *),
-  ConvertHWBToRGB(const double,const double,const double,Quantum *,Quantum *,
-    Quantum *),
-  ConvertRGBToHSB(const Quantum,const Quantum,const Quantum,double *,double *,
+  ConvertHSBToRGB(const double,const double,const double,double *,double *,
     double *),
-  ConvertRGBToHWB(const Quantum,const Quantum,const Quantum,double *,double *,
+  ConvertHWBToRGB(const double,const double,const double,double *,double *,
+    double *),
+  ConvertRGBToHSB(const double,const double,const double,double *,double *,
+    double *),
+  ConvertRGBToHWB(const double,const double,const double,double *,double *,
     double *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
diff --git a/MagickCore/gem.c b/MagickCore/gem.c
index 3ab4f3f..f33a735 100644
--- a/MagickCore/gem.c
+++ b/MagickCore/gem.c
@@ -74,7 +74,7 @@
 %  The format of the ConvertHSBToRGBImage method is:
 %
 %      void ConvertHSBToRGB(const double hue,const double saturation,
-%        const double brightness,Quantum *red,Quantum *green,Quantum *blue)
+%        const double brightness,double *red,double *green,double *blue)
 %
 %  A description of each parameter follows:
 %
@@ -85,7 +85,7 @@
 %
 */
 MagickPrivate void ConvertHSBToRGB(const double hue,const double saturation,
-  const double brightness,Quantum *red,Quantum *green,Quantum *blue)
+  const double brightness,double *red,double *green,double *blue)
 {
   MagickRealType
     f,
@@ -97,9 +97,9 @@
   /*
     Convert HSB to RGB colorspace.
   */
-  assert(red != (Quantum *) NULL);
-  assert(green != (Quantum *) NULL);
-  assert(blue != (Quantum *) NULL);
+  assert(red != (double *) NULL);
+  assert(green != (double *) NULL);
+  assert(blue != (double *) NULL);
   if (saturation == 0.0)
     {
       *red=ClampToQuantum((MagickRealType) QuantumRange*brightness);
@@ -177,7 +177,7 @@
 %  The format of the ConvertHSLToRGBImage method is:
 %
 %      void ConvertHSLToRGB(const double hue,const double saturation,
-%        const double lightness,Quantum *red,Quantum *green,Quantum *blue)
+%        const double lightness,double *red,double *green,double *blue)
 %
 %  A description of each parameter follows:
 %
@@ -205,7 +205,7 @@
 }
 
 MagickExport void ConvertHSLToRGB(const double hue,const double saturation,
-  const double lightness,Quantum *red,Quantum *green,Quantum *blue)
+  const double lightness,double *red,double *green,double *blue)
 {
   MagickRealType
     b,
@@ -217,9 +217,9 @@
   /*
     Convert HSL to RGB colorspace.
   */
-  assert(red != (Quantum *) NULL);
-  assert(green != (Quantum *) NULL);
-  assert(blue != (Quantum *) NULL);
+  assert(red != (double *) NULL);
+  assert(green != (double *) NULL);
+  assert(blue != (double *) NULL);
   if (saturation == 0)
     {
       *red=ClampToQuantum((MagickRealType) QuantumRange*lightness);
@@ -257,7 +257,7 @@
 %  The format of the ConvertHWBToRGBImage method is:
 %
 %      void ConvertHWBToRGB(const double hue,const double whiteness,
-%        const double blackness,Quantum *red,Quantum *green,Quantum *blue)
+%        const double blackness,double *red,double *green,double *blue)
 %
 %  A description of each parameter follows:
 %
@@ -268,7 +268,7 @@
 %
 */
 MagickPrivate void ConvertHWBToRGB(const double hue,const double whiteness,
-  const double blackness,Quantum *red,Quantum *green,Quantum *blue)
+  const double blackness,double *red,double *green,double *blue)
 {
   MagickRealType
     b,
@@ -284,9 +284,9 @@
   /*
     Convert HWB to RGB colorspace.
   */
-  assert(red != (Quantum *) NULL);
-  assert(green != (Quantum *) NULL);
-  assert(blue != (Quantum *) NULL);
+  assert(red != (double *) NULL);
+  assert(green != (double *) NULL);
+  assert(blue != (double *) NULL);
   v=1.0-blackness;
   if (hue == 0.0)
     {
@@ -332,8 +332,8 @@
 %
 %  The format of the ConvertRGBToHSB method is:
 %
-%      void ConvertRGBToHSB(const Quantum red,const Quantum green,
-%        const Quantum blue,double *hue,double *saturation,double *brightness)
+%      void ConvertRGBToHSB(const double red,const double green,
+%        const double blue,double *hue,double *saturation,double *brightness)
 %
 %  A description of each parameter follows:
 %
@@ -344,8 +344,8 @@
 %      component of the HSB color space.
 %
 */
-MagickPrivate void ConvertRGBToHSB(const Quantum red,const Quantum green,
-  const Quantum blue,double *hue,double *saturation,double *brightness)
+MagickPrivate void ConvertRGBToHSB(const double red,const double green,
+  const double blue,double *hue,double *saturation,double *brightness)
 {
   MagickRealType
     delta,
@@ -402,8 +402,8 @@
 %
 %  The format of the ConvertRGBToHSL method is:
 %
-%      void ConvertRGBToHSL(const Quantum red,const Quantum green,
-%        const Quantum blue,double *hue,double *saturation,double *lightness)
+%      void ConvertRGBToHSL(const double red,const double green,
+%        const double blue,double *hue,double *saturation,double *lightness)
 %
 %  A description of each parameter follows:
 %
@@ -429,8 +429,8 @@
   return(y);
 }
 
-MagickExport void ConvertRGBToHSL(const Quantum red,const Quantum green,
-  const Quantum blue,double *hue,double *saturation,double *lightness)
+MagickExport void ConvertRGBToHSL(const double red,const double green,
+  const double blue,double *hue,double *saturation,double *lightness)
 {
   MagickRealType
     b,
@@ -495,8 +495,8 @@
 %
 %  The format of the ConvertRGBToHWB method is:
 %
-%      void ConvertRGBToHWB(const Quantum red,const Quantum green,
-%        const Quantum blue,double *hue,double *whiteness,double *blackness)
+%      void ConvertRGBToHWB(const double red,const double green,
+%        const double blue,double *hue,double *whiteness,double *blackness)
 %
 %  A description of each parameter follows:
 %
@@ -507,8 +507,8 @@
 %      component of the HWB color space.
 %
 */
-MagickPrivate void ConvertRGBToHWB(const Quantum red,const Quantum green,
-  const Quantum blue,double *hue,double *whiteness,double *blackness)
+MagickPrivate void ConvertRGBToHWB(const double red,const double green,
+  const double blue,double *hue,double *whiteness,double *blackness)
 {
   long
     i;
diff --git a/MagickCore/gem.h b/MagickCore/gem.h
index 4519e3e..3a8dab0 100644
--- a/MagickCore/gem.h
+++ b/MagickCore/gem.h
@@ -29,9 +29,9 @@
   ExpandAffine(const AffineMatrix *);
 
 extern MagickExport void
-  ConvertHSLToRGB(const double,const double,const double,Quantum *,Quantum *,
-    Quantum *),
-  ConvertRGBToHSL(const Quantum,const Quantum,const Quantum,double *,double *,
+  ConvertHSLToRGB(const double,const double,const double,double *,double *,
+    double *),
+  ConvertRGBToHSL(const double,const double,const double,double *,double *,
     double *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
diff --git a/MagickCore/pixel-private.h b/MagickCore/pixel-private.h
index 3b4741c..5b4512f 100644
--- a/MagickCore/pixel-private.h
+++ b/MagickCore/pixel-private.h
@@ -28,21 +28,21 @@
 #include <magick/image-private.h>
 #include <magick/quantum-private.h>
 
-static inline MagickPixelPacket *CloneMagickPixelPacket(
-  const MagickPixelPacket *pixel)
+static inline MagickPixelInfo *CloneMagickPixelInfo(
+  const MagickPixelInfo *pixel)
 {
-  MagickPixelPacket
+  MagickPixelInfo
     *clone_pixel;
 
-  clone_pixel=(MagickPixelPacket *) AcquireAlignedMemory(1,
+  clone_pixel=(MagickPixelInfo *) AcquireAlignedMemory(1,
     sizeof(*clone_pixel));
-  if (clone_pixel == (MagickPixelPacket *) NULL)
+  if (clone_pixel == (MagickPixelInfo *) NULL)
     ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
   *clone_pixel=(*pixel);
   return(clone_pixel);
 }
 
-static inline MagickBooleanType IsGrayPixel(const PixelPacket *pixel)
+static inline MagickBooleanType IsGrayPixel(const PixelInfo *pixel)
 {
 #if !defined(MAGICKCORE_HDRI_SUPPORT)
   if ((GetPixelRed(pixel) == GetPixelGreen(pixel)) && 
@@ -63,7 +63,7 @@
   return(MagickFalse);
 }
 
-static inline MagickBooleanType IsMonochromePixel(const PixelPacket *pixel)
+static inline MagickBooleanType IsMonochromePixel(const PixelInfo *pixel)
 {
 #if !defined(MAGICKCORE_HDRI_SUPPORT)
   if (((GetPixelRed(pixel) == 0) ||
@@ -88,8 +88,8 @@
   return(MagickFalse);
 }
 
-static inline void SetMagickPixelPacket(const Image *image,
-  const PixelPacket *color,const IndexPacket *index,MagickPixelPacket *pixel)
+static inline void SetMagickPixelInfo(const Image *image,
+  const PixelInfo *color,const IndexPacket *index,MagickPixelInfo *pixel)
 {
   pixel->red=(MagickRealType) GetPixelRed(color);
   pixel->green=(MagickRealType) GetPixelGreen(color);
@@ -100,8 +100,8 @@
     pixel->index=(MagickRealType) GetPixelIndex(index);
 }
 
-static inline void SetMagickPixelPacketBias(const Image *image,
-  MagickPixelPacket *pixel)
+static inline void SetMagickPixelInfoBias(const Image *image,
+  MagickPixelInfo *pixel)
 {
   /*
     Obsoleted by MorphologyApply().
@@ -113,8 +113,8 @@
   pixel->index=image->bias;
 }
 
-static inline void SetPixelPacket(const Image *image,
-  const MagickPixelPacket *pixel,PixelPacket *color,IndexPacket *index)
+static inline void SetPixelInfo(const Image *image,
+  const MagickPixelInfo *pixel,PixelInfo *color,IndexPacket *index)
 {
   SetPixelRed(color,ClampToQuantum(pixel->red));
   SetPixelGreen(color,ClampToQuantum(pixel->green));
diff --git a/MagickCore/pixel.h b/MagickCore/pixel.h
index ea98dbd..31a03cc 100644
--- a/MagickCore/pixel.h
+++ b/MagickCore/pixel.h
@@ -105,12 +105,15 @@
   size_t
     depth;
 
-  MagickRealType
+  MagickSizeType
+    count;
+
+  double
     red,
     green,
     blue,
-    alpha,
     black,
+    alpha,
     index;
 } PixelInfo;
 
@@ -126,16 +129,31 @@
 
 typedef struct _PixelPacket
 {
-  Quantum
+  ClassType
+    storage_class;
+
+  ColorspaceType
+    colorspace;
+
+  MagickBooleanType
+    matte;
+
+  double
+    fuzz;
+
+  size_t
+    depth;
+
+  MagickSizeType
+    count;
+
+  double
     red,
     green,
     blue,
-    alpha,
     black,
+    alpha,
     index;
-
- MagickSizeType
-    count;
 } PixelPacket;
 
 typedef struct _CacheView