diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs
index 98f3224..41ff9b6 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -1804,7 +1804,7 @@
             *indexes;
 
           register PixelPacket
-            *p;
+            *q;
 
           CacheView
             *image_view;
@@ -1817,9 +1817,9 @@
             y=0;
             items=sscanf(attribute,"%*[^[][%ld%*[,/]%ld",&x,&y);
             image_view=AcquireCacheView(image);
-            p=GetCacheViewAuthenticPixels(image_view,x,y,1,1,exception);
+            q=GetCacheViewAuthenticPixels(image_view,x,y,1,1,exception);
             indexes=GetCacheViewAuthenticIndexQueue(image_view);
-            if (p != (PixelPacket *) NULL)
+            if (q != (PixelPacket *) NULL)
               {
                 if ((strchr(SvPV(sval,na),',') == 0) ||
                     (strchr(SvPV(sval,na),')') != 0))
@@ -1838,14 +1838,14 @@
                     if ((flags & ChiValue) != 0)
                       pixel.index=geometry_info.chi;
                   }
-                p->red=ClampToQuantum(pixel.red);
-                p->green=ClampToQuantum(pixel.green);
-                p->blue=ClampToQuantum(pixel.blue);
-                p->opacity=ClampToQuantum(pixel.opacity);
+                SetRedPixelComponent(q,ClampToQuantum(pixel.red));
+                SetGreenPixelComponent(q,ClampToQuantum(pixel.green));
+                SetBluePixelComponent(q,ClampToQuantum(pixel.blue));
+                SetOpacityPixelComponent(q,ClampToQuantum(pixel.opacity));
                 if (((image->colorspace == CMYKColorspace) ||
                      (image->storage_class == PseudoClass)) &&
                     (indexes != (IndexPacket *) NULL))
-                  *indexes=ClampToQuantum(pixel.index);
+                  SetIndexPixelComponent(indexes,ClampToQuantum(pixel.index));
                 (void) SyncCacheViewAuthenticPixels(image_view,exception);
               }
             image_view=DestroyCacheView(image_view);
@@ -5140,11 +5140,11 @@
               if (image->colorspace != CMYKColorspace)
                 (void) FormatMagickString(tuple,MaxTextExtent,QuantumFormat ","
                   QuantumFormat "," QuantumFormat "," QuantumFormat,
-                  p->red,p->green,p->blue,p->opacity);
+                  GetRedPixelComponent(p),GetGreenPixelComponent(p),GetBluePixelComponent(p),GetOpacityPixelComponent(p));
               else
                 (void) FormatMagickString(tuple,MaxTextExtent,QuantumFormat ","
                   QuantumFormat "," QuantumFormat "," QuantumFormat ","
-                  QuantumFormat,p->red,p->green,p->blue,*indexes,p->opacity);
+                  QuantumFormat,GetRedPixelComponent(p),GetGreenPixelComponent(p),GetBluePixelComponent(p),*indexes,GetOpacityPixelComponent(p));
               s=newSVpv(tuple,0);
               PUSHs(s ? sv_2mortal(s) : &sv_undef);
               continue;
@@ -6273,16 +6273,16 @@
         if (normalize != MagickFalse)
           scale=1.0/QuantumRange;
         if ((channel & RedChannel) != 0)
-          PUSHs(sv_2mortal(newSVnv(scale*p->red)));
+          PUSHs(sv_2mortal(newSVnv(scale*GetRedPixelComponent(p))));
         if ((channel & GreenChannel) != 0)
-          PUSHs(sv_2mortal(newSVnv(scale*p->green)));
+          PUSHs(sv_2mortal(newSVnv(scale*GetGreenPixelComponent(p))));
         if ((channel & BlueChannel) != 0)
-          PUSHs(sv_2mortal(newSVnv(scale*p->blue)));
+          PUSHs(sv_2mortal(newSVnv(scale*GetBluePixelComponent(p))));
         if (((channel & IndexChannel) != 0) &&
             (image->colorspace == CMYKColorspace))
           PUSHs(sv_2mortal(newSVnv(scale*(*indexes))));
         if ((channel & OpacityChannel) != 0)
-          PUSHs(sv_2mortal(newSVnv(scale*p->opacity)));
+          PUSHs(sv_2mortal(newSVnv(scale*GetOpacityPixelComponent(p))));
       }
 
   PerlException:
diff --git a/coders/aai.c b/coders/aai.c
index c56312c..6a4f83b 100644
--- a/coders/aai.c
+++ b/coders/aai.c
@@ -378,7 +378,7 @@
         *q++=ScaleQuantumToChar(GetGreenPixelComponent(p));
         *q++=ScaleQuantumToChar(GetRedPixelComponent(p));
         *q=ScaleQuantumToChar((Quantum) (QuantumRange-
-          (image->matte != MagickFalse ? p->opacity : OpaqueOpacity)));
+          (image->matte != MagickFalse ? GetOpacityPixelComponent(p) : OpaqueOpacity)));
         if (*q == 255)
           *q=254;
         p++;
diff --git a/coders/avs.c b/coders/avs.c
index a4e41d6..dac7038 100644
--- a/coders/avs.c
+++ b/coders/avs.c
@@ -372,7 +372,7 @@
       for (x=0; x < (ssize_t) image->columns; x++)
       {
         *q++=ScaleQuantumToChar((Quantum) (QuantumRange-
-          (image->matte != MagickFalse ? p->opacity : OpaqueOpacity)));
+          (image->matte != MagickFalse ? GetOpacityPixelComponent(p) : OpaqueOpacity)));
         *q++=ScaleQuantumToChar(GetRedPixelComponent(p));
         *q++=ScaleQuantumToChar(GetGreenPixelComponent(p));
         *q++=ScaleQuantumToChar(GetBluePixelComponent(p));
diff --git a/coders/exr.c b/coders/exr.c
index a992e78..e481272 100644
--- a/coders/exr.c
+++ b/coders/exr.c
@@ -431,16 +431,16 @@
       break;
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      ImfFloatToHalf(QuantumScale*p->red,&half_quantum);
+      ImfFloatToHalf(QuantumScale*GetRedPixelComponent(p),&half_quantum);
       scanline[x].r=half_quantum;
-      ImfFloatToHalf(QuantumScale*p->green,&half_quantum);
+      ImfFloatToHalf(QuantumScale*GetGreenPixelComponent(p),&half_quantum);
       scanline[x].g=half_quantum;
-      ImfFloatToHalf(QuantumScale*p->blue,&half_quantum);
+      ImfFloatToHalf(QuantumScale*GetBluePixelComponent(p),&half_quantum);
       scanline[x].b=half_quantum;
       if (image->matte == MagickFalse)
         ImfFloatToHalf(1.0,&half_quantum);
       else
-        ImfFloatToHalf(1.0-QuantumScale*p->opacity,&half_quantum);
+        ImfFloatToHalf(1.0-QuantumScale*GetOpacityPixelComponent(p),&half_quantum);
       scanline[x].a=half_quantum;
       p++;
     }
diff --git a/coders/hdr.c b/coders/hdr.c
index 950e7a8..a4d4cef 100644
--- a/coders/hdr.c
+++ b/coders/hdr.c
@@ -752,20 +752,20 @@
       pixel[1]=0;
       pixel[2]=0;
       pixel[3]=0;
-      gamma=QuantumScale*p->red;
-      if ((QuantumScale*p->green) > gamma)
-        gamma=QuantumScale*p->green;
-      if ((QuantumScale*p->blue) > gamma)
-        gamma=QuantumScale*p->blue;
+      gamma=QuantumScale*GetRedPixelComponent(p);
+      if ((QuantumScale*GetGreenPixelComponent(p)) > gamma)
+        gamma=QuantumScale*GetGreenPixelComponent(p);
+      if ((QuantumScale*GetBluePixelComponent(p)) > gamma)
+        gamma=QuantumScale*GetBluePixelComponent(p);
       if (gamma > MagickEpsilon)
         {
           int
             exponent;
 
           gamma=frexp(gamma,&exponent)*256.0/gamma;
-          pixel[0]=(unsigned char) (gamma*QuantumScale*p->red);
-          pixel[1]=(unsigned char) (gamma*QuantumScale*p->green);
-          pixel[2]=(unsigned char) (gamma*QuantumScale*p->blue);
+          pixel[0]=(unsigned char) (gamma*QuantumScale*GetRedPixelComponent(p));
+          pixel[1]=(unsigned char) (gamma*QuantumScale*GetGreenPixelComponent(p));
+          pixel[2]=(unsigned char) (gamma*QuantumScale*GetBluePixelComponent(p));
           pixel[3]=(unsigned char) (exponent+128);
         }
       if ((image->columns >= 8) && (image->columns <= 0x7ffff))
diff --git a/coders/icon.c b/coders/icon.c
index 68b36d9..f7568ed 100644
--- a/coders/icon.c
+++ b/coders/icon.c
@@ -1192,7 +1192,7 @@
           {
             byte<<=1;
             if ((next->matte == MagickTrue) &&
-                (p->opacity == (Quantum) TransparentOpacity))
+                (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity))
               byte|=0x01;
             bit++;
             if (bit == 8)
diff --git a/coders/miff.c b/coders/miff.c
index 2ecd2d1..ee2db85 100644
--- a/coders/miff.c
+++ b/coders/miff.c
@@ -2414,7 +2414,7 @@
             if ((length < 255) && (x < (ssize_t) (image->columns-1)) &&
                 (IsColorEqual(p,&pixel) != MagickFalse) &&
                 ((image->matte == MagickFalse) ||
-                 (p->opacity == pixel.opacity)) &&
+                 (GetOpacityPixelComponent(p) == pixel.opacity)) &&
                 ((indexes == (IndexPacket *) NULL) || (index == indexes[x])))
               length++;
             else
diff --git a/coders/palm.c b/coders/palm.c
index 2e3417a..2f69f05 100644
--- a/coders/palm.c
+++ b/coders/palm.c
@@ -863,7 +863,7 @@
               (size_t) QuantumRange) << 11) |
               (((63*(size_t) GetGreenPixelComponent(p))/(size_t) QuantumRange) << 5) |
               ((31*(size_t) GetBluePixelComponent(p))/(size_t) QuantumRange));
-            if (p->opacity == (Quantum) TransparentOpacity)
+            if (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity)
               {
                 transpix.red=GetRedPixelComponent(p);
                 transpix.green=GetGreenPixelComponent(p);
diff --git a/coders/png.c b/coders/png.c
index 5d5e84c..9bb20f8 100644
--- a/coders/png.c
+++ b/coders/png.c
@@ -574,11 +574,11 @@
               for (x=(ssize_t) image->columns-1; x >= 0; x--)
               {
                 ok_to_reduce=
-                  (p->red == ScaleQuantumToCharToQuantum(p->red) &&
-                  p->green == ScaleQuantumToCharToQuantum(p->green) &&
-                  p->blue == ScaleQuantumToCharToQuantum(p->blue) &&
+                  (GetRedPixelComponent(p) == ScaleQuantumToCharToQuantum(GetRedPixelComponent(p)) &&
+                  GetGreenPixelComponent(p) == ScaleQuantumToCharToQuantum(GetGreenPixelComponent(p)) &&
+                  GetBluePixelComponent(p) == ScaleQuantumToCharToQuantum(GetBluePixelComponent(p)) &&
                   (image->matte == MagickFalse ||
-                  p->opacity == ScaleQuantumToCharToQuantum(p->opacity)))
+                  GetOpacityPixelComponent(p) == ScaleQuantumToCharToQuantum(GetOpacityPixelComponent(p))))
                   ? MagickTrue : MagickFalse;
 
                 if (ok_to_reduce == MagickFalse)
diff --git a/coders/ps.c b/coders/ps.c
index 08ddd9b..6f646a4 100644
--- a/coders/ps.c
+++ b/coders/ps.c
@@ -1026,7 +1026,7 @@
 #define WriteRunlengthPacket(image,pixel,length,p) \
 { \
   if ((image->matte != MagickFalse) && \
-      (p->opacity == (Quantum) TransparentOpacity)) \
+      (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity)) \
     { \
       q=PopHexPixel(hex_digits,0xff,q); \
       q=PopHexPixel(hex_digits,0xff,q); \
@@ -1890,9 +1890,9 @@
                 length=255;
                 for (x=0; x < (ssize_t) image->columns; x++)
                 {
-                  if ((p->red == pixel.red) && (p->green == pixel.green) &&
-                      (p->blue == pixel.blue) &&
-                      (p->opacity == pixel.opacity) && (length < 255) &&
+                  if ((GetRedPixelComponent(p) == pixel.red) && (GetGreenPixelComponent(p) == pixel.green) &&
+                      (GetBluePixelComponent(p) == pixel.blue) &&
+                      (GetOpacityPixelComponent(p) == pixel.opacity) && (length < 255) &&
                       (x < (ssize_t) (image->columns-1)))
                     length++;
                   else
@@ -1950,7 +1950,7 @@
                 for (x=0; x < (ssize_t) image->columns; x++)
                 {
                   if ((image->matte != MagickFalse) &&
-                      (p->opacity == (Quantum) TransparentOpacity))
+                      (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity))
                     {
                       q=PopHexPixel(hex_digits,0xff,q);
                       q=PopHexPixel(hex_digits,0xff,q);
diff --git a/coders/ps2.c b/coders/ps2.c
index 1b20a15..97e7e27 100644
--- a/coders/ps2.c
+++ b/coders/ps2.c
@@ -885,7 +885,7 @@
                 for (x=0; x < (ssize_t) image->columns; x++)
                 {
                   if ((image->matte != MagickFalse) &&
-                      (p->opacity == (Quantum) TransparentOpacity))
+                      (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity))
                     {
                       *q++=ScaleQuantumToChar((Quantum) QuantumRange);
                       *q++=ScaleQuantumToChar((Quantum) QuantumRange);
@@ -940,7 +940,7 @@
                 for (x=0; x < (ssize_t) image->columns; x++)
                 {
                   if ((image->matte != MagickFalse) &&
-                      (p->opacity == (Quantum) TransparentOpacity))
+                      (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity))
                     {
                       Ascii85Encode(image,ScaleQuantumToChar((Quantum)
                         QuantumRange));
diff --git a/coders/uil.c b/coders/uil.c
index 580991d..115ce8e 100644
--- a/coders/uil.c
+++ b/coders/uil.c
@@ -249,7 +249,7 @@
             for (x=0; x < (ssize_t) image->columns; x++)
             {
               matte_image[i]=(unsigned char)
-              (p->opacity == (Quantum) TransparentOpacity ? 1 : 0);
+              (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity ? 1 : 0);
               if (matte_image[i] != 0)
                 transparent=MagickTrue;
               i++;
diff --git a/coders/webp.c b/coders/webp.c
index dcc281b..7751534 100644
--- a/coders/webp.c
+++ b/coders/webp.c
@@ -376,7 +376,7 @@
       *q++=ScaleQuantumToChar(GetBluePixelComponent(p));
       if (image->matte != MagickFalse)
         *q++=ScaleQuantumToChar((Quantum) (QuantumRange-
-          (image->matte != MagickFalse ? p->opacity : OpaqueOpacity)));
+          (image->matte != MagickFalse ? GetOpacityPixelComponent(p) : OpaqueOpacity)));
       p++;
     }
     status=SetImageProgress(image,SaveImageTag,(MagickOffsetType) y,
diff --git a/filters/analyze.c b/filters/analyze.c
index 4b0e162..4ed8609 100644
--- a/filters/analyze.c
+++ b/filters/analyze.c
@@ -165,7 +165,7 @@
         }
       for (x=0; x < (ssize_t) image->columns; x++)
       {
-        ConvertRGBToHSB(GetRedPixelComponent(p),p->green,p->blue,&hue,&saturation,&brightness);
+        ConvertRGBToHSB(GetRedPixelComponent(p),GetGreenPixelComponent(p),GetBluePixelComponent(p),&hue,&saturation,&brightness);
         brightness*=QuantumRange;
         brightness_sum_x+=brightness;
         brightness_sum_x2+=brightness*brightness;
diff --git a/magick/attribute.c b/magick/attribute.c
index 09e446c..97777c2 100644
--- a/magick/attribute.c
+++ b/magick/attribute.c
@@ -918,13 +918,13 @@
       for (i=0; i < (ssize_t) image->colors; i++)
       {
         if ((channel & RedChannel) != 0)
-          p->red=ScaleAnyToQuantum(ScaleQuantumToAny(GetRedPixelComponent(p),range),range);
+          GetRedPixelComponent(p)=ScaleAnyToQuantum(ScaleQuantumToAny(GetRedPixelComponent(p),range),range);
         if ((channel & GreenChannel) != 0)
-          p->green=ScaleAnyToQuantum(ScaleQuantumToAny(GetGreenPixelComponent(p),range),range);
+          GetGreenPixelComponent(p)=ScaleAnyToQuantum(ScaleQuantumToAny(GetGreenPixelComponent(p),range),range);
         if ((channel & BlueChannel) != 0)
-          p->blue=ScaleAnyToQuantum(ScaleQuantumToAny(GetBluePixelComponent(p),range),range);
+          GetBluePixelComponent(p)=ScaleAnyToQuantum(ScaleQuantumToAny(GetBluePixelComponent(p),range),range);
         if ((channel & OpacityChannel) != 0)
-          p->opacity=ScaleAnyToQuantum(ScaleQuantumToAny(GetOpacityPixelComponent(p),range),
+          GetOpacityPixelComponent(p)=ScaleAnyToQuantum(ScaleQuantumToAny(GetOpacityPixelComponent(p),range),
             range);
         p++;
       }
diff --git a/magick/color-private.h b/magick/color-private.h
index 939ac82..7e6c619 100644
--- a/magick/color-private.h
+++ b/magick/color-private.h
@@ -29,7 +29,7 @@
 static inline MagickBooleanType IsColorEqual(const PixelPacket *p,
   const PixelPacket *q)
 {
-  if ((p->red == q->red) && (p->green == q->green) && (p->blue == q->blue))
+  if ((GetRedPixelComponent(p) == q->red) && (GetGreenPixelComponent(p) == q->green) && (GetBluePixelComponent(p) == q->blue))
     return(MagickTrue);
   return(MagickFalse);
 }
@@ -55,7 +55,7 @@
     {
       if (GetOpacityPixelComponent(p) != q->opacity)
         return(MagickFalse);
-      if (p->opacity == TransparentOpacity)
+      if (GetOpacityPixelComponent(p) == TransparentOpacity)
         return(MagickTrue);
     }
   if (GetRedPixelComponent(p) != q->red)
@@ -68,23 +68,23 @@
     return(MagickFalse);
 #else
   if ((p->matte != MagickFalse) && (q->matte == MagickFalse) &&
-      (fabs(p->opacity-OpaqueOpacity) > 0.5))
+      (fabs(GetOpacityPixelComponent(p)-OpaqueOpacity) > 0.5))
     return(MagickFalse);
   if ((q->matte != MagickFalse) && (p->matte == MagickFalse) &&
       (fabs(q->opacity-OpaqueOpacity)) > 0.5)
     return(MagickFalse);
   if ((p->matte != MagickFalse) && (q->matte != MagickFalse))
     {
-      if (fabs(p->opacity-q->opacity) > 0.5)
+      if (fabs(GetOpacityPixelComponent(p)-q->opacity) > 0.5)
         return(MagickFalse);
-      if (fabs(p->opacity-TransparentOpacity) <= 0.5)
+      if (fabs(GetOpacityPixelComponent(p)-TransparentOpacity) <= 0.5)
         return(MagickTrue);
     }
-  if (fabs(p->red-q->red) > 0.5)
+  if (fabs(GetRedPixelComponent(p)-q->red) > 0.5)
     return(MagickFalse);
-  if (fabs(p->green-q->green) > 0.5)
+  if (fabs(GetGreenPixelComponent(p)-q->green) > 0.5)
     return(MagickFalse);
-  if (fabs(p->blue-q->blue) > 0.5)
+  if (fabs(GetBluePixelComponent(p)-q->blue) > 0.5)
     return(MagickFalse);
   if ((p->colorspace == CMYKColorspace) && (fabs(p->index-q->index) > 0.5))
     return(MagickFalse);
diff --git a/magick/color.c b/magick/color.c
index 81052a5..6986fd9 100644
--- a/magick/color.c
+++ b/magick/color.c
@@ -1564,7 +1564,7 @@
       /*
         Transparencies are involved - set alpha distance
       */
-      pixel=(MagickRealType) ((image->matte != MagickFalse ? p->opacity :
+      pixel=(MagickRealType) ((image->matte != MagickFalse ? GetOpacityPixelComponent(p) :
         OpaqueOpacity)-(image->matte != MagickFalse ? q->opacity :
         OpaqueOpacity));
       distance=pixel*pixel;
@@ -1584,7 +1584,7 @@
   */
   distance*=3.0;  /* rescale appropriately */
   fuzz*=3.0;
-  pixel=(MagickRealType) p->red-q->red;
+  pixel=(MagickRealType) GetRedPixelComponent(p)-q->red;
   if ((image->colorspace == HSLColorspace) ||
       (image->colorspace == HSBColorspace) ||
       (image->colorspace == HWBColorspace))
@@ -1593,18 +1593,18 @@
          angle of 'S'/'W' length with 'L'/'B' forming appropriate cones.  In
          other words this is a hack - Anthony
       */
-      if (fabs((double) (p->red-q->red)) > (QuantumRange/2))
-        pixel=(MagickRealType) p->red-q->red-QuantumRange;
+      if (fabs((double) (GetRedPixelComponent(p)-q->red)) > (QuantumRange/2))
+        pixel=(MagickRealType) GetRedPixelComponent(p)-q->red-QuantumRange;
       pixel*=2;
     }
   distance+=scale*pixel*pixel;
   if (distance > fuzz)
     return(MagickFalse);
-  pixel=(MagickRealType) p->green-q->green;
+  pixel=(MagickRealType) GetGreenPixelComponent(p)-q->green;
   distance+=scale*pixel*pixel;
   if (distance > fuzz)
     return(MagickFalse);
-  pixel=(MagickRealType) p->blue-q->blue;
+  pixel=(MagickRealType) GetBluePixelComponent(p)-q->blue;
   distance+=scale*pixel*pixel;
   if (distance > fuzz)
     return(MagickFalse);
@@ -1809,7 +1809,7 @@
   if ((p->matte != MagickFalse) || (q->matte != MagickFalse))
     {
       /* transparencies are involved - set alpha distance */
-      pixel = ( p->matte != MagickFalse ? p->opacity : OpaqueOpacity )
+      pixel = ( p->matte != MagickFalse ? GetOpacityPixelComponent(p) : OpaqueOpacity )
             - ( q->matte != MagickFalse ? q->opacity : OpaqueOpacity );
       distance=pixel*pixel;
       if (distance > fuzz)
@@ -1842,7 +1842,7 @@
   distance*=3.0;  /* rescale appropriately */
   fuzz*=3.0;
 
-  pixel=p->red-q->red;
+  pixel=GetRedPixelComponent(p)-q->red;
   if ((p->colorspace == HSLColorspace) || (p->colorspace == HSBColorspace) ||
       (p->colorspace == HWBColorspace))
     {
@@ -1851,20 +1851,20 @@
          with 'L'/'B' forming appropriate cones.
          In other words this is a hack - Anthony
       */
-      if (fabs((double) (p->red-q->red)) > (QuantumRange/2))
-        pixel=p->red-q->red-QuantumRange;
+      if (fabs((double) (GetRedPixelComponent(p)-q->red)) > (QuantumRange/2))
+        pixel=GetRedPixelComponent(p)-q->red-QuantumRange;
       pixel*=2;
     }
   distance += pixel*pixel*scale;
   if (distance > fuzz)
     return(MagickFalse);
 
-  pixel=p->green-q->green;
+  pixel=GetGreenPixelComponent(p)-q->green;
   distance+=pixel*pixel*scale;
   if (distance > fuzz)
     return(MagickFalse);
 
-  pixel=p->blue-q->blue;
+  pixel=GetBluePixelComponent(p)-q->blue;
   distance+=pixel*pixel*scale;
   if (distance > fuzz)
     return(MagickFalse);
@@ -1913,10 +1913,10 @@
 
   if (image->matte == MagickFalse)
     return(MagickTrue);
-  if (p->opacity == q->opacity)
+  if (GetOpacityPixelComponent(p) == q->opacity)
     return(MagickTrue);
   fuzz=MagickMax(image->fuzz,MagickSQ1_2)*MagickMax(image->fuzz,MagickSQ1_2);
-  pixel=(MagickRealType) p->opacity-(MagickRealType) q->opacity;
+  pixel=(MagickRealType) GetOpacityPixelComponent(p)-(MagickRealType) q->opacity;
   distance=pixel*pixel;
   if (distance > fuzz)
     return(MagickFalse);
diff --git a/magick/compare.c b/magick/compare.c
index 446e6e9..8f354cb 100644
--- a/magick/compare.c
+++ b/magick/compare.c
@@ -527,26 +527,26 @@
 
       if ((channel & RedChannel) != 0)
         {
-          distance=QuantumScale*(p->red-(MagickRealType) q->red);
+          distance=QuantumScale*(GetRedPixelComponent(p)-(MagickRealType) q->red);
           channel_distortion[RedChannel]+=distance*distance;
           channel_distortion[AllChannels]+=distance*distance;
         }
       if ((channel & GreenChannel) != 0)
         {
-          distance=QuantumScale*(p->green-(MagickRealType) q->green);
+          distance=QuantumScale*(GetGreenPixelComponent(p)-(MagickRealType) q->green);
           channel_distortion[GreenChannel]+=distance*distance;
           channel_distortion[AllChannels]+=distance*distance;
         }
       if ((channel & BlueChannel) != 0)
         {
-          distance=QuantumScale*(p->blue-(MagickRealType) q->blue);
+          distance=QuantumScale*(GetBluePixelComponent(p)-(MagickRealType) q->blue);
           channel_distortion[BlueChannel]+=distance*distance;
           channel_distortion[AllChannels]+=distance*distance;
         }
       if (((channel & OpacityChannel) != 0) && ((image->matte != MagickFalse) ||
           (reconstruct_image->matte != MagickFalse)))
         {
-          distance=QuantumScale*((image->matte != MagickFalse ? p->opacity :
+          distance=QuantumScale*((image->matte != MagickFalse ? GetOpacityPixelComponent(p) :
             OpaqueOpacity)-(reconstruct_image->matte != MagickFalse ?
             q->opacity : OpaqueOpacity));
           channel_distortion[OpacityChannel]+=distance*distance;
@@ -643,26 +643,26 @@
 
       if ((channel & RedChannel) != 0)
         {
-          distance=QuantumScale*fabs(p->red-(double) q->red);
+          distance=QuantumScale*fabs(GetRedPixelComponent(p)-(double) q->red);
           channel_distortion[RedChannel]+=distance;
           channel_distortion[AllChannels]+=distance;
         }
       if ((channel & GreenChannel) != 0)
         {
-          distance=QuantumScale*fabs(p->green-(double) q->green);
+          distance=QuantumScale*fabs(GetGreenPixelComponent(p)-(double) q->green);
           channel_distortion[GreenChannel]+=distance;
           channel_distortion[AllChannels]+=distance;
         }
       if ((channel & BlueChannel) != 0)
         {
-          distance=QuantumScale*fabs(p->blue-(double) q->blue);
+          distance=QuantumScale*fabs(GetBluePixelComponent(p)-(double) q->blue);
           channel_distortion[BlueChannel]+=distance;
           channel_distortion[AllChannels]+=distance;
         }
       if (((channel & OpacityChannel) != 0) &&
           (image->matte != MagickFalse))
         {
-          distance=QuantumScale*fabs(p->opacity-(double) q->opacity);
+          distance=QuantumScale*fabs(GetOpacityPixelComponent(p)-(double) q->opacity);
           channel_distortion[OpacityChannel]+=distance;
           channel_distortion[AllChannels]+=distance;
         }
@@ -757,7 +757,7 @@
         }
       if ((channel & RedChannel) != 0)
         {
-          distance=fabs(alpha*p->red-beta*q->red);
+          distance=fabs(alpha*GetRedPixelComponent(p)-beta*q->red);
           distortion[RedChannel]+=distance;
           distortion[AllChannels]+=distance;
           mean_error+=distance*distance;
@@ -767,7 +767,7 @@
         }
       if ((channel & GreenChannel) != 0)
         {
-          distance=fabs(alpha*p->green-beta*q->green);
+          distance=fabs(alpha*GetGreenPixelComponent(p)-beta*q->green);
           distortion[GreenChannel]+=distance;
           distortion[AllChannels]+=distance;
           mean_error+=distance*distance;
@@ -777,7 +777,7 @@
         }
       if ((channel & BlueChannel) != 0)
         {
-          distance=fabs(alpha*p->blue-beta*q->blue);
+          distance=fabs(alpha*GetBluePixelComponent(p)-beta*q->blue);
           distortion[BlueChannel]+=distance;
           distortion[AllChannels]+=distance;
           mean_error+=distance*distance;
@@ -788,7 +788,7 @@
       if (((channel & OpacityChannel) != 0) &&
           (image->matte != MagickFalse))
         {
-          distance=fabs((double) p->opacity-q->opacity);
+          distance=fabs((double) GetOpacityPixelComponent(p)-q->opacity);
           distortion[OpacityChannel]+=distance;
           distortion[AllChannels]+=distance;
           mean_error+=distance*distance;
@@ -880,26 +880,26 @@
 
       if ((channel & RedChannel) != 0)
         {
-          distance=QuantumScale*(p->red-(MagickRealType) q->red);
+          distance=QuantumScale*(GetRedPixelComponent(p)-(MagickRealType) q->red);
           channel_distortion[RedChannel]+=distance*distance;
           channel_distortion[AllChannels]+=distance*distance;
         }
       if ((channel & GreenChannel) != 0)
         {
-          distance=QuantumScale*(p->green-(MagickRealType) q->green);
+          distance=QuantumScale*(GetGreenPixelComponent(p)-(MagickRealType) q->green);
           channel_distortion[GreenChannel]+=distance*distance;
           channel_distortion[AllChannels]+=distance*distance;
         }
       if ((channel & BlueChannel) != 0)
         {
-          distance=QuantumScale*(p->blue-(MagickRealType) q->blue);
+          distance=QuantumScale*(GetBluePixelComponent(p)-(MagickRealType) q->blue);
           channel_distortion[BlueChannel]+=distance*distance;
           channel_distortion[AllChannels]+=distance*distance;
         }
       if (((channel & OpacityChannel) != 0) &&
           (image->matte != MagickFalse))
         {
-          distance=QuantumScale*(p->opacity-(MagickRealType) q->opacity);
+          distance=QuantumScale*(GetOpacityPixelComponent(p)-(MagickRealType) q->opacity);
           channel_distortion[OpacityChannel]+=distance*distance;
           channel_distortion[AllChannels]+=distance*distance;
         }
@@ -998,20 +998,20 @@
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       if ((channel & RedChannel) != 0)
-        distortion[RedChannel]+=area*QuantumScale*(p->red-
+        distortion[RedChannel]+=area*QuantumScale*(GetRedPixelComponent(p)-
           image_statistics[RedChannel].mean)*(q->red-
           reconstruct_statistics[RedChannel].mean);
       if ((channel & GreenChannel) != 0)
-        distortion[GreenChannel]+=area*QuantumScale*(p->green-
+        distortion[GreenChannel]+=area*QuantumScale*(GetGreenPixelComponent(p)-
           image_statistics[GreenChannel].mean)*(q->green-
           reconstruct_statistics[GreenChannel].mean);
       if ((channel & BlueChannel) != 0)
-        distortion[BlueChannel]+=area*QuantumScale*(p->blue-
+        distortion[BlueChannel]+=area*QuantumScale*(GetBluePixelComponent(p)-
           image_statistics[BlueChannel].mean)*(q->blue-
           reconstruct_statistics[BlueChannel].mean);
       if (((channel & OpacityChannel) != 0) &&
           (image->matte != MagickFalse))
-        distortion[OpacityChannel]+=area*QuantumScale*(p->opacity-
+        distortion[OpacityChannel]+=area*QuantumScale*(GetOpacityPixelComponent(p)-
           image_statistics[OpacityChannel].mean)*(q->opacity-
           reconstruct_statistics[OpacityChannel].mean);
       if (((channel & IndexChannel) != 0) &&
@@ -1131,7 +1131,7 @@
 
       if ((channel & RedChannel) != 0)
         {
-          distance=QuantumScale*fabs(p->red-(double) q->red);
+          distance=QuantumScale*fabs(GetRedPixelComponent(p)-(double) q->red);
           if (distance > channel_distortion[RedChannel])
             channel_distortion[RedChannel]=distance;
           if (distance > channel_distortion[AllChannels])
@@ -1139,7 +1139,7 @@
         }
       if ((channel & GreenChannel) != 0)
         {
-          distance=QuantumScale*fabs(p->green-(double) q->green);
+          distance=QuantumScale*fabs(GetGreenPixelComponent(p)-(double) q->green);
           if (distance > channel_distortion[GreenChannel])
             channel_distortion[GreenChannel]=distance;
           if (distance > channel_distortion[AllChannels])
@@ -1147,7 +1147,7 @@
         }
       if ((channel & BlueChannel) != 0)
         {
-          distance=QuantumScale*fabs(p->blue-(double) q->blue);
+          distance=QuantumScale*fabs(GetBluePixelComponent(p)-(double) q->blue);
           if (distance > channel_distortion[BlueChannel])
             channel_distortion[BlueChannel]=distance;
           if (distance > channel_distortion[AllChannels])
@@ -1156,7 +1156,7 @@
       if (((channel & OpacityChannel) != 0) &&
           (image->matte != MagickFalse))
         {
-          distance=QuantumScale*fabs(p->opacity-(double) q->opacity);
+          distance=QuantumScale*fabs(GetOpacityPixelComponent(p)-(double) q->opacity);
           if (distance > channel_distortion[OpacityChannel])
             channel_distortion[OpacityChannel]=distance;
           if (distance > channel_distortion[AllChannels])
@@ -1588,19 +1588,19 @@
       MagickRealType
         distance;
 
-      distance=fabs(p->red-(double) q->red);
+      distance=fabs(GetRedPixelComponent(p)-(double) q->red);
       mean_error_per_pixel+=distance;
       mean_error+=distance*distance;
       if (distance > maximum_error)
         maximum_error=distance;
       area++;
-      distance=fabs(p->green-(double) q->green);
+      distance=fabs(GetGreenPixelComponent(p)-(double) q->green);
       mean_error_per_pixel+=distance;
       mean_error+=distance*distance;
       if (distance > maximum_error)
         maximum_error=distance;
       area++;
-      distance=fabs(p->blue-(double) q->blue);
+      distance=fabs(GetBluePixelComponent(p)-(double) q->blue);
       mean_error_per_pixel+=distance;
       mean_error+=distance*distance;
       if (distance > maximum_error)
@@ -1608,7 +1608,7 @@
       area++;
       if (image->matte != MagickFalse)
         {
-          distance=fabs(p->opacity-(double) q->opacity);
+          distance=fabs(GetOpacityPixelComponent(p)-(double) q->opacity);
           mean_error_per_pixel+=distance;
           mean_error+=distance*distance;
           if (distance > maximum_error)
@@ -1739,17 +1739,17 @@
     reconstruct_indexes=GetCacheViewVirtualIndexQueue(reconstruct_view);
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      distortion+=area*QuantumScale*(p->red-
+      distortion+=area*QuantumScale*(GetRedPixelComponent(p)-
         image_statistics[RedChannel].mean)*(q->red-
         reconstruct_statistics[RedChannel].mean);
-      distortion+=area*QuantumScale*(p->green-
+      distortion+=area*QuantumScale*(GetGreenPixelComponent(p)-
         image_statistics[GreenChannel].mean)*(q->green-
         reconstruct_statistics[GreenChannel].mean);
-      distortion+=area*QuantumScale*(p->blue-
+      distortion+=area*QuantumScale*(GetBluePixelComponent(p)-
         image_statistics[BlueChannel].mean)*(q->blue-
         reconstruct_statistics[BlueChannel].mean);
       if (image->matte != MagickFalse)
-        distortion+=area*QuantumScale*(p->opacity-
+        distortion+=area*QuantumScale*(GetOpacityPixelComponent(p)-
           image_statistics[OpacityChannel].mean)*(q->opacity-
           reconstruct_statistics[OpacityChannel].mean);
       if ((image->colorspace == CMYKColorspace) &&
diff --git a/magick/composite-private.h b/magick/composite-private.h
index beb6372..ae9a1eb 100644
--- a/magick/composite-private.h
+++ b/magick/composite-private.h
@@ -62,20 +62,20 @@
 #if !defined(MAGICKCORE_HDRI_SUPPORT)
   composite->opacity=(Quantum) (QuantumRange*(1.0-gamma)+0.5);
   gamma=1.0/(gamma <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=(Quantum) (gamma*MagickOver_((MagickRealType) p->red,alpha,
+  composite->red=(Quantum) (gamma*MagickOver_((MagickRealType) GetRedPixelComponent(p),alpha,
     (MagickRealType) q->red,beta)+0.5);
-  composite->green=(Quantum) (gamma*MagickOver_((MagickRealType) p->green,alpha,
+  composite->green=(Quantum) (gamma*MagickOver_((MagickRealType) GetGreenPixelComponent(p),alpha,
     (MagickRealType) q->green,beta)+0.5);
-  composite->blue=(Quantum) (gamma*MagickOver_((MagickRealType) p->blue,alpha,
+  composite->blue=(Quantum) (gamma*MagickOver_((MagickRealType) GetBluePixelComponent(p),alpha,
     (MagickRealType) q->blue,beta)+0.5);
 #else
   composite->opacity=(Quantum) (QuantumRange*(1.0-gamma));
   gamma=1.0/(gamma <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=(Quantum) (gamma*MagickOver_((MagickRealType) p->red,alpha,
+  composite->red=(Quantum) (gamma*MagickOver_((MagickRealType) GetRedPixelComponent(p),alpha,
     (MagickRealType) q->red,beta));
-  composite->green=(Quantum) (gamma*MagickOver_((MagickRealType) p->green,alpha,
+  composite->green=(Quantum) (gamma*MagickOver_((MagickRealType) GetGreenPixelComponent(p),alpha,
     (MagickRealType) q->green,beta));
-  composite->blue=(Quantum) (gamma*MagickOver_((MagickRealType) p->blue,alpha,
+  composite->blue=(Quantum) (gamma*MagickOver_((MagickRealType) GetBluePixelComponent(p),alpha,
     (MagickRealType) q->blue,beta));
 #endif
 }
@@ -122,9 +122,9 @@
   gamma=RoundToUnity(Sa+Da);  /* 'Plus' blending -- not 'Over' blending */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=1.0/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*(Sa*p->red+Da*q->red);
-  composite->green=gamma*(Sa*p->green+Da*q->green);
-  composite->blue=gamma*(Sa*p->blue+Da*q->blue);
+  composite->red=gamma*(Sa*GetRedPixelComponent(p)+Da*q->red);
+  composite->green=gamma*(Sa*GetGreenPixelComponent(p)+Da*q->green);
+  composite->blue=gamma*(Sa*GetBluePixelComponent(p)+Da*q->blue);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*(Sa*p->index+Da*q->index);
 }
@@ -137,7 +137,7 @@
   const MagickRealType beta,MagickPixelPacket *composite)
 {
   MagickPixelCompositePlus(p,(MagickRealType) (QuantumRange-alpha*
-    (QuantumRange-p->opacity)),q,(MagickRealType) (QuantumRange-beta*
+    (QuantumRange-GetOpacityPixelComponent(p))),q,(MagickRealType) (QuantumRange-beta*
     GetAlphaPixelComponent(q)),composite);
 }
 
diff --git a/magick/composite.c b/magick/composite.c
index f1c6880..6f7509e 100644
--- a/magick/composite.c
+++ b/magick/composite.c
@@ -211,7 +211,7 @@
   MagickRealType
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   composite->opacity=q->opacity;   /* optimized  Da = 1.0-Gamma */
   composite->red=Atop(GetRedPixelComponent(p),Sa,q->red,1.0);
   composite->green=Atop(GetGreenPixelComponent(p),Sa,q->green,1.0);
@@ -281,16 +281,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*ColorBurn(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*ColorBurn(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*ColorBurn(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*ColorBurn(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*ColorBurn(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*ColorBurn(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*ColorBurn(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -343,16 +343,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*ColorDodge(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*ColorDodge(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*ColorDodge(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*ColorDodge(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*ColorDodge(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*ColorDodge(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*ColorDodge(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -380,14 +380,14 @@
     gamma;
 
   if ( (channel & SyncChannels) != 0 ) {
-    composite->opacity=QuantumScale*p->opacity*q->opacity; /* Over Blend */
+    composite->opacity=QuantumScale*GetOpacityPixelComponent(p)*q->opacity; /* Over Blend */
     gamma=1.0-QuantumScale*composite->opacity;
     gamma=1.0/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-    composite->red=gamma*Darken(GetRedPixelComponent(p),p->opacity,q->red,q->opacity);
-    composite->green=gamma*Darken(GetGreenPixelComponent(p),p->opacity,q->green,q->opacity);
-    composite->blue=gamma*Darken(GetBluePixelComponent(p),p->opacity,q->blue,q->opacity);
+    composite->red=gamma*Darken(GetRedPixelComponent(p),GetOpacityPixelComponent(p),q->red,q->opacity);
+    composite->green=gamma*Darken(GetGreenPixelComponent(p),GetOpacityPixelComponent(p),q->green,q->opacity);
+    composite->blue=gamma*Darken(GetBluePixelComponent(p),GetOpacityPixelComponent(p),q->blue,q->opacity);
     if (q->colorspace == CMYKColorspace)
-      composite->index=gamma*Darken(p->index,p->opacity,q->index,q->opacity);
+      composite->index=gamma*Darken(p->index,GetOpacityPixelComponent(p),q->index,q->opacity);
   }
   else { /* handle channels as separate grayscale channels */
     if ( (channel & AlphaChannel) != 0 )
@@ -417,7 +417,7 @@
       Da,
       Sa;
 
-    Sa=1.0-QuantumScale*p->opacity;
+    Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);
     Da=1.0-QuantumScale*q->opacity;
     *composite = (Sa*MagickPixelIntensity(p) < Da*MagickPixelIntensity(q))
               ? *p : *q;
@@ -425,13 +425,13 @@
   else {
     int from_p = (MagickPixelIntensity(p) < MagickPixelIntensity(q));
     if ( (channel & AlphaChannel) != 0 )
-      composite->opacity = from_p ? p->opacity : q->opacity;
+      composite->opacity = from_p ? GetOpacityPixelComponent(p) : q->opacity;
     if ( (channel & RedChannel) != 0 )
-      composite->red = from_p ? p->red : q->red;
+      composite->red = from_p ? GetRedPixelComponent(p) : q->red;
     if ( (channel & GreenChannel) != 0 )
-      composite->green = from_p ? p->green : q->green;
+      composite->green = from_p ? GetGreenPixelComponent(p) : q->green;
     if ( (channel & BlueChannel) != 0 )
-      composite->blue = from_p ? p->blue : q->blue;
+      composite->blue = from_p ? GetBluePixelComponent(p) : q->blue;
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index = from_p ? p->index : q->index;
   }
@@ -453,7 +453,7 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   if ( (channel & SyncChannels) != 0 ) {
     gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
@@ -468,13 +468,13 @@
   }
   else { /* handle channels as separate grayscale channels */
     if ( (channel & AlphaChannel) != 0 )
-      composite->opacity=QuantumRange-fabs(p->opacity - q->opacity);
+      composite->opacity=QuantumRange-fabs(GetOpacityPixelComponent(p) - q->opacity);
     if ( (channel & RedChannel) != 0 )
-      composite->red=fabs(p->red - q->red);
+      composite->red=fabs(GetRedPixelComponent(p) - q->red);
     if ( (channel & GreenChannel) != 0 )
-      composite->green=fabs(p->green - q->green);
+      composite->green=fabs(GetGreenPixelComponent(p) - q->green);
     if ( (channel & BlueChannel) != 0 )
-      composite->blue=fabs(p->blue - q->blue);
+      composite->blue=fabs(GetBluePixelComponent(p) - q->blue);
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index=fabs(p->index - q->index);
   }
@@ -509,17 +509,17 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   if ( (channel & SyncChannels) != 0 ) {
     gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
     composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
     gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-    composite->red=gamma*Divide(QuantumScale*p->red*Sa,Sa,QuantumScale*
+    composite->red=gamma*Divide(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
       q->red*Da,Da);
-    composite->green=gamma*Divide(QuantumScale*p->green*Sa,Sa,QuantumScale*
+    composite->green=gamma*Divide(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
       q->green*Da,Da);
-    composite->blue=gamma*Divide(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+    composite->blue=gamma*Divide(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
       q->blue*Da,Da);
     if (q->colorspace == CMYKColorspace)
       composite->index=gamma*Divide(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -530,13 +530,13 @@
       composite->opacity=QuantumRange*(1.0-Divide(Sa,1.0,Da,1.0));
     if ( (channel & RedChannel) != 0 )
       composite->red=QuantumRange*
-          Divide(QuantumScale*p->red,1.0,QuantumScale*q->red,1.0);
+          Divide(QuantumScale*GetRedPixelComponent(p),1.0,QuantumScale*q->red,1.0);
     if ( (channel & GreenChannel) != 0 )
       composite->green=QuantumRange*
-          Divide(QuantumScale*p->green,1.0,QuantumScale*q->green,1.0);
+          Divide(QuantumScale*GetGreenPixelComponent(p),1.0,QuantumScale*q->green,1.0);
     if ( (channel & BlueChannel) != 0 )
       composite->blue=QuantumRange*
-          Divide(QuantumScale*p->blue,1.0,QuantumScale*q->blue,1.0);
+          Divide(QuantumScale*GetBluePixelComponent(p),1.0,QuantumScale*q->blue,1.0);
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index=QuantumRange*
           Divide(QuantumScale*p->index,1.0,QuantumScale*q->index,1.0);
@@ -558,17 +558,17 @@
     Sa,
     Da;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   if ( (channel & SyncChannels) != 0 ) {
     gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
     composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
     gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-    composite->red=gamma*Exclusion(QuantumScale*p->red*Sa,Sa,QuantumScale*
+    composite->red=gamma*Exclusion(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
       q->red*Da,Da);
-    composite->green=gamma*Exclusion(QuantumScale*p->green*Sa,Sa,QuantumScale*
+    composite->green=gamma*Exclusion(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
       q->green*Da,Da);
-    composite->blue=gamma*Exclusion(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+    composite->blue=gamma*Exclusion(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
       q->blue*Da,Da);
     if (q->colorspace == CMYKColorspace)
       composite->index=gamma*Exclusion(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -579,13 +579,13 @@
       composite->opacity=QuantumRange*(1.0-Exclusion(Sa,1.0,Da,1.0));
     if ( (channel & RedChannel) != 0 )
       composite->red=QuantumRange*
-          Exclusion(QuantumScale*p->red,1.0,QuantumScale*q->red,1.0);
+          Exclusion(QuantumScale*GetRedPixelComponent(p),1.0,QuantumScale*q->red,1.0);
     if ( (channel & GreenChannel) != 0 )
       composite->green=QuantumRange*
-          Exclusion(QuantumScale*p->green,1.0,QuantumScale*q->green,1.0);
+          Exclusion(QuantumScale*GetGreenPixelComponent(p),1.0,QuantumScale*q->green,1.0);
     if ( (channel & BlueChannel) != 0 )
       composite->blue=QuantumRange*
-          Exclusion(QuantumScale*p->blue,1.0,QuantumScale*q->blue,1.0);
+          Exclusion(QuantumScale*GetBluePixelComponent(p),1.0,QuantumScale*q->blue,1.0);
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index=QuantumRange*
           Exclusion(QuantumScale*p->index,1.0,QuantumScale*q->index,1.0);
@@ -608,16 +608,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*HardLight(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*HardLight(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*HardLight(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*HardLight(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*HardLight(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*HardLight(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*HardLight(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -681,7 +681,7 @@
     Sa,
     Da;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=Sa*Da;
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
@@ -714,14 +714,14 @@
     gamma;
 
   if ( (channel & SyncChannels) != 0 ) {
-    composite->opacity=QuantumScale*p->opacity*q->opacity; /* Over Blend */
+    composite->opacity=QuantumScale*GetOpacityPixelComponent(p)*q->opacity; /* Over Blend */
     gamma=1.0-QuantumScale*composite->opacity;
     gamma=1.0/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-    composite->red=gamma*Lighten(GetRedPixelComponent(p),p->opacity,q->red,q->opacity);
-    composite->green=gamma*Lighten(GetGreenPixelComponent(p),p->opacity,q->green,q->opacity);
-    composite->blue=gamma*Lighten(GetBluePixelComponent(p),p->opacity,q->blue,q->opacity);
+    composite->red=gamma*Lighten(GetRedPixelComponent(p),GetOpacityPixelComponent(p),q->red,q->opacity);
+    composite->green=gamma*Lighten(GetGreenPixelComponent(p),GetOpacityPixelComponent(p),q->green,q->opacity);
+    composite->blue=gamma*Lighten(GetBluePixelComponent(p),GetOpacityPixelComponent(p),q->blue,q->opacity);
     if (q->colorspace == CMYKColorspace)
-      composite->index=gamma*Lighten(p->index,p->opacity,q->index,q->opacity);
+      composite->index=gamma*Lighten(p->index,GetOpacityPixelComponent(p),q->index,q->opacity);
   }
   else { /* handle channels as separate grayscale channels */
     if ( (channel & AlphaChannel) != 0 )
@@ -751,7 +751,7 @@
       Da,
       Sa;
 
-    Sa=1.0-QuantumScale*p->opacity;
+    Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);
     Da=1.0-QuantumScale*q->opacity;
     *composite = (Sa*MagickPixelIntensity(p) > Da*MagickPixelIntensity(q))
                ? *p : *q;
@@ -759,13 +759,13 @@
   else {
     int from_p = (MagickPixelIntensity(p) > MagickPixelIntensity(q));
     if ( (channel & AlphaChannel) != 0 )
-      composite->opacity = from_p ? p->opacity : q->opacity;
+      composite->opacity = from_p ? GetOpacityPixelComponent(p) : q->opacity;
     if ( (channel & RedChannel) != 0 )
-      composite->red = from_p ? p->red : q->red;
+      composite->red = from_p ? GetRedPixelComponent(p) : q->red;
     if ( (channel & GreenChannel) != 0 )
-      composite->green = from_p ? p->green : q->green;
+      composite->green = from_p ? GetGreenPixelComponent(p) : q->green;
     if ( (channel & BlueChannel) != 0 )
-      composite->blue = from_p ? p->blue : q->blue;
+      composite->blue = from_p ? GetBluePixelComponent(p) : q->blue;
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index = from_p ? p->index : q->index;
   }
@@ -792,14 +792,14 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=1.0/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*(p->red*Sa+q->red*Da);
-  composite->green=gamma*(p->green*Sa+q->green*Da);
-  composite->blue=gamma*(p->blue*Sa+q->blue*Da);
+  composite->red=gamma*(GetRedPixelComponent(p)*Sa+q->red*Da);
+  composite->green=gamma*(GetGreenPixelComponent(p)*Sa+q->green*Da);
+  composite->blue=gamma*(GetBluePixelComponent(p)*Sa+q->blue*Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*(p->index*Sa+q->index*Da);
 }
@@ -825,16 +825,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*LinearBurn(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*LinearBurn(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*LinearBurn(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*LinearBurn(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*LinearBurn(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*LinearBurn(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*LinearBurn(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -868,16 +868,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*LinearLight(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*LinearLight(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*LinearLight(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*LinearLight(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*LinearLight(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*LinearLight(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*LinearLight(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -926,11 +926,11 @@
     gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
     composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
     gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-    composite->red=gamma*Mathematics(QuantumScale*p->red*Sa,Sa,QuantumScale*
+    composite->red=gamma*Mathematics(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
       q->red*Da,Da,args);
-    composite->green=gamma*Mathematics(QuantumScale*p->green*Sa,Sa,QuantumScale*
+    composite->green=gamma*Mathematics(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
       q->green*Da,Da,args);
-    composite->blue=gamma*Mathematics(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+    composite->blue=gamma*Mathematics(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
       q->blue*Da,Da,args);
     if (q->colorspace == CMYKColorspace)
       composite->index=gamma*Mathematics(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -941,13 +941,13 @@
       composite->opacity=QuantumRange*(1.0-Mathematics(Sa,1.0,Da,1.0,args));
     if ( (channel & RedChannel) != 0 )
       composite->red=QuantumRange*
-          Mathematics(QuantumScale*p->red,1.0,QuantumScale*q->red,1.0,args);
+          Mathematics(QuantumScale*GetRedPixelComponent(p),1.0,QuantumScale*q->red,1.0,args);
     if ( (channel & GreenChannel) != 0 )
       composite->green=QuantumRange*
-          Mathematics(QuantumScale*p->green,1.0,QuantumScale*q->green,1.0,args);
+          Mathematics(QuantumScale*GetGreenPixelComponent(p),1.0,QuantumScale*q->green,1.0,args);
     if ( (channel & BlueChannel) != 0 )
       composite->blue=QuantumRange*
-          Mathematics(QuantumScale*p->blue,1.0,QuantumScale*q->blue,1.0,args);
+          Mathematics(QuantumScale*GetBluePixelComponent(p),1.0,QuantumScale*q->blue,1.0,args);
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index=QuantumRange*
           Mathematics(QuantumScale*p->index,1.0,QuantumScale*q->index,1.0,args);
@@ -975,17 +975,17 @@
       The MagickPixelCompositePlus() function is defined in
       "composite-private.h" so it can also be used for Image Blending.
     */
-    MagickPixelCompositePlus(p,p->opacity,q,q->opacity,composite);
+    MagickPixelCompositePlus(p,GetOpacityPixelComponent(p),q,q->opacity,composite);
   }
   else { /* handle channels as separate grayscale channels */
     if ( (channel & AlphaChannel) != 0 )
-      composite->opacity=p->opacity+q->opacity-QuantumRange;
+      composite->opacity=GetOpacityPixelComponent(p)+q->opacity-QuantumRange;
     if ( (channel & RedChannel) != 0 )
-      composite->red=p->red+q->red;
+      composite->red=GetRedPixelComponent(p)+q->red;
     if ( (channel & GreenChannel) != 0 )
-      composite->green=p->green+q->green;
+      composite->green=GetGreenPixelComponent(p)+q->green;
     if ( (channel & BlueChannel) != 0 )
-      composite->blue=p->blue+q->blue;
+      composite->blue=GetBluePixelComponent(p)+q->blue;
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index=p->index+q->index;
   }
@@ -1013,15 +1013,15 @@
     Da,
     gamma;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   if ( (channel & SyncChannels) != 0 ) {
     gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
     composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
     gamma=1.0/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-    composite->red=gamma*Minus(p->red*Sa,Sa,q->red*Da,Da);
-    composite->green=gamma*Minus(p->green*Sa,Sa,q->green*Da,Da);
-    composite->blue=gamma*Minus(p->blue*Sa,Sa,q->blue*Da,Da);
+    composite->red=gamma*Minus(GetRedPixelComponent(p)*Sa,Sa,q->red*Da,Da);
+    composite->green=gamma*Minus(GetGreenPixelComponent(p)*Sa,Sa,q->green*Da,Da);
+    composite->blue=gamma*Minus(GetBluePixelComponent(p)*Sa,Sa,q->blue*Da,Da);
     if (q->colorspace == CMYKColorspace)
       composite->index=gamma*Minus(p->index*Sa,Sa,q->index*Da,Da);
   }
@@ -1029,11 +1029,11 @@
     if ( (channel & AlphaChannel) != 0 )
       composite->opacity=QuantumRange*(1.0-(Sa-Da));
     if ( (channel & RedChannel) != 0 )
-      composite->red=p->red-q->red;
+      composite->red=GetRedPixelComponent(p)-q->red;
     if ( (channel & GreenChannel) != 0 )
-      composite->green=p->green-q->green;
+      composite->green=GetGreenPixelComponent(p)-q->green;
     if ( (channel & BlueChannel) != 0 )
-      composite->blue=p->blue-q->blue;
+      composite->blue=GetBluePixelComponent(p)-q->blue;
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index=p->index-q->index;
   }
@@ -1061,7 +1061,7 @@
       Da,
       gamma;
 
-    Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+    Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
     Da=1.0-QuantumScale*q->opacity;
     gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
     composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
@@ -1074,7 +1074,7 @@
   }
   else { /* handle channels as separate grayscale channels */
     if ( (channel & AlphaChannel) != 0 )
-      composite->opacity=QuantumRange-ModulusAdd(QuantumRange-p->opacity,
+      composite->opacity=QuantumRange-ModulusAdd(QuantumRange-GetOpacityPixelComponent(p),
            1.0,QuantumRange-q->opacity,1.0);
     if ( (channel & RedChannel) != 0 )
       composite->red=ModulusAdd(GetRedPixelComponent(p),1.0,q->red,1.0);
@@ -1109,7 +1109,7 @@
       Da,
       gamma;
 
-    Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+    Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
     Da=1.0-QuantumScale*q->opacity;
     gamma = RoundToUnity(Sa+Da-Sa*Da);
     composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
@@ -1122,7 +1122,7 @@
   }
   else { /* handle channels as separate grayscale channels */
     if ( (channel & AlphaChannel) != 0 )
-      composite->opacity=QuantumRange-ModulusSubtract(QuantumRange-p->opacity,
+      composite->opacity=QuantumRange-ModulusSubtract(QuantumRange-GetOpacityPixelComponent(p),
            1.0,QuantumRange-q->opacity,1.0);
     if ( (channel & RedChannel) != 0 )
       composite->red=ModulusSubtract(GetRedPixelComponent(p),1.0,q->red,1.0);
@@ -1150,17 +1150,17 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   if ( (channel & SyncChannels) != 0 ) {
     gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
     composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
     gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-    composite->red=gamma*Multiply(QuantumScale*p->red*Sa,Sa,QuantumScale*
+    composite->red=gamma*Multiply(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
       q->red*Da,Da);
-    composite->green=gamma*Multiply(QuantumScale*p->green*Sa,Sa,QuantumScale*
+    composite->green=gamma*Multiply(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
       q->green*Da,Da);
-    composite->blue=gamma*Multiply(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+    composite->blue=gamma*Multiply(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
       q->blue*Da,Da);
     if (q->colorspace == CMYKColorspace)
       composite->index=gamma*Multiply(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -1170,11 +1170,11 @@
     if ( (channel & AlphaChannel) != 0 )
       composite->opacity=QuantumRange*(1.0-Sa*Da);
     if ( (channel & RedChannel) != 0 )
-      composite->red=QuantumScale*p->red*q->red;
+      composite->red=QuantumScale*GetRedPixelComponent(p)*q->red;
     if ( (channel & GreenChannel) != 0 )
-      composite->green=QuantumScale*p->green*q->green;
+      composite->green=QuantumScale*GetGreenPixelComponent(p)*q->green;
     if ( (channel & BlueChannel) != 0 )
-      composite->blue=QuantumScale*p->blue*q->blue;
+      composite->blue=QuantumScale*GetBluePixelComponent(p)*q->blue;
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index=QuantumScale*p->index*q->index;
   }
@@ -1195,7 +1195,7 @@
     Da,
     gamma;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=Sa*(1.0-Da);
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
@@ -1231,16 +1231,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*PegtopLight(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*PegtopLight(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*PegtopLight(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*PegtopLight(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*PegtopLight(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*PegtopLight(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*PegtopLight(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -1271,16 +1271,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*PinLight(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*PinLight(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*PinLight(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*PinLight(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*PinLight(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*PinLight(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*PinLight(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -1305,16 +1305,16 @@
     Da,
     gamma;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   if ( (channel & SyncChannels) != 0 ) {
     gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
     composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
     Sa*=QuantumScale; Da*=QuantumScale; /* optimization */
     gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-    composite->red=gamma*Screen(p->red*Sa,q->red*Da);
-    composite->green=gamma*Screen(p->green*Sa,q->green*Da);
-    composite->blue=gamma*Screen(p->blue*Sa,q->blue*Da);
+    composite->red=gamma*Screen(GetRedPixelComponent(p)*Sa,q->red*Da);
+    composite->green=gamma*Screen(GetGreenPixelComponent(p)*Sa,q->green*Da);
+    composite->blue=gamma*Screen(GetBluePixelComponent(p)*Sa,q->blue*Da);
     if (q->colorspace == CMYKColorspace)
       composite->index=gamma*Screen(p->index*Sa,q->index*Da);
     }
@@ -1322,13 +1322,13 @@
     if ( (channel & AlphaChannel) != 0 )
       composite->opacity=QuantumRange*(1.0-Screen(Sa,Da));
     if ( (channel & RedChannel) != 0 )
-      composite->red=QuantumRange*Screen(QuantumScale*p->red,
+      composite->red=QuantumRange*Screen(QuantumScale*GetRedPixelComponent(p),
            QuantumScale*q->red);
     if ( (channel & GreenChannel) != 0 )
-      composite->green=QuantumRange*Screen(QuantumScale*p->green,
+      composite->green=QuantumRange*Screen(QuantumScale*GetGreenPixelComponent(p),
            QuantumScale*q->green);
     if ( (channel & BlueChannel) != 0 )
-      composite->blue=QuantumRange*Screen(QuantumScale*p->blue,
+      composite->blue=QuantumRange*Screen(QuantumScale*GetBluePixelComponent(p),
            QuantumScale*q->blue);
     if ( (channel & IndexChannel) != 0 && q->colorspace == CMYKColorspace)
       composite->index=QuantumRange*Screen(QuantumScale*p->index,
@@ -1381,16 +1381,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*SoftLight(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*SoftLight(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*SoftLight(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*SoftLight(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*SoftLight(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*SoftLight(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*SoftLight(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -1454,16 +1454,16 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=RoundToUnity(Sa+Da-Sa*Da); /* over blend, as per SVG doc */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=QuantumRange/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*VividLight(QuantumScale*p->red*Sa,Sa,QuantumScale*
+  composite->red=gamma*VividLight(QuantumScale*GetRedPixelComponent(p)*Sa,Sa,QuantumScale*
     q->red*Da,Da);
-  composite->green=gamma*VividLight(QuantumScale*p->green*Sa,Sa,QuantumScale*
+  composite->green=gamma*VividLight(QuantumScale*GetGreenPixelComponent(p)*Sa,Sa,QuantumScale*
     q->green*Da,Da);
-  composite->blue=gamma*VividLight(QuantumScale*p->blue*Sa,Sa,QuantumScale*
+  composite->blue=gamma*VividLight(QuantumScale*GetBluePixelComponent(p)*Sa,Sa,QuantumScale*
     q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*VividLight(QuantumScale*p->index*Sa,Sa,QuantumScale*
@@ -1484,14 +1484,14 @@
     gamma,
     Sa;
 
-  Sa=1.0-QuantumScale*p->opacity;  /* simplify and speed up equations */
+  Sa=1.0-QuantumScale*GetOpacityPixelComponent(p);  /* simplify and speed up equations */
   Da=1.0-QuantumScale*q->opacity;
   gamma=Sa+Da-2*Sa*Da;        /* Xor blend mode X=0,Y=1,Z=1 */
   composite->opacity=(MagickRealType) QuantumRange*(1.0-gamma);
   gamma=1.0/(fabs(gamma) <= MagickEpsilon ? 1.0 : gamma);
-  composite->red=gamma*Xor(p->red*Sa,Sa,q->red*Da,Da);
-  composite->green=gamma*Xor(p->green*Sa,Sa,q->green*Da,Da);
-  composite->blue=gamma*Xor(p->blue*Sa,Sa,q->blue*Da,Da);
+  composite->red=gamma*Xor(GetRedPixelComponent(p)*Sa,Sa,q->red*Da,Da);
+  composite->green=gamma*Xor(GetGreenPixelComponent(p)*Sa,Sa,q->green*Da,Da);
+  composite->blue=gamma*Xor(GetBluePixelComponent(p)*Sa,Sa,q->blue*Da,Da);
   if (q->colorspace == CMYKColorspace)
     composite->index=gamma*Xor(p->index*Sa,Sa,q->index*Da,Da);
 }
@@ -1884,8 +1884,8 @@
               blur.y1=(-height*sin(angle));
               blur.y2=height*cos(angle);
             }
-          ScaleResampleFilter(resample_filter,blur.x1*QuantumScale*p->red,
-            blur.y1*QuantumScale*p->green,blur.x2*QuantumScale*p->red,
+          ScaleResampleFilter(resample_filter,blur.x1*QuantumScale*GetRedPixelComponent(p),
+            blur.y1*QuantumScale*GetGreenPixelComponent(p),blur.x2*QuantumScale*GetRedPixelComponent(p),
             blur.y2*QuantumScale*GetGreenPixelComponent(p));
           (void) ResamplePixelColor(resample_filter,(double) x_offset+x,
             (double) y_offset+y,&pixel);
@@ -2049,10 +2049,10 @@
           /*
             Displace the offset.
           */
-          offset.x=(horizontal_scale*(p->red-(((MagickRealType) QuantumRange+
+          offset.x=(horizontal_scale*(GetRedPixelComponent(p)-(((MagickRealType) QuantumRange+
             1.0)/2.0)))/(((MagickRealType) QuantumRange+1.0)/2.0)+
             center.x+((compose == DisplaceCompositeOp) ? x : 0);
-          offset.y=(vertical_scale*(p->green-(((MagickRealType) QuantumRange+
+          offset.y=(vertical_scale*(GetGreenPixelComponent(p)-(((MagickRealType) QuantumRange+
             1.0)/2.0)))/(((MagickRealType) QuantumRange+1.0)/2.0)+
             center.y+((compose == DisplaceCompositeOp) ? y : 0);
           (void) InterpolateMagickPixelPacket(image,image_view,
diff --git a/magick/deprecate.c b/magick/deprecate.c
index 9f9db93..4d14233 100644
--- a/magick/deprecate.c
+++ b/magick/deprecate.c
@@ -1833,15 +1833,15 @@
       MagickRealType
         pixel;
 
-      pixel=QuantumScale*(p->red-(double) q->red);
+      pixel=QuantumScale*(GetRedPixelComponent(p)-(double) q->red);
       similarity+=pixel*pixel;
-      pixel=QuantumScale*(p->green-(double) q->green);
+      pixel=QuantumScale*(GetGreenPixelComponent(p)-(double) q->green);
       similarity+=pixel*pixel;
-      pixel=QuantumScale*(p->blue-(double) q->blue);
+      pixel=QuantumScale*(GetBluePixelComponent(p)-(double) q->blue);
       similarity+=pixel*pixel;
       if ((image->matte != MagickFalse) && (reference->matte != MagickFalse))
         {
-          pixel=QuantumScale*(p->opacity-(double) q->opacity);
+          pixel=QuantumScale*(GetOpacityPixelComponent(p)-(double) q->opacity);
           similarity+=pixel*pixel;
         }
       if ((image->colorspace == CMYKColorspace) &&
@@ -2101,18 +2101,18 @@
   register MagickRealType
     distance;
 
-  if ((fuzz == 0.0) && (p->red == q->red) && (p->green == q->green) &&
-      (p->blue == q->blue))
+  if ((fuzz == 0.0) && (GetRedPixelComponent(p) == q->red) && (GetGreenPixelComponent(p) == q->green) &&
+      (GetBluePixelComponent(p) == q->blue))
     return(MagickTrue);
-  pixel.red=p->red-(MagickRealType) q->red;
+  pixel.red=GetRedPixelComponent(p)-(MagickRealType) q->red;
   distance=pixel.red*pixel.red;
   if (distance > (fuzz*fuzz))
     return(MagickFalse);
-  pixel.green=p->green-(MagickRealType) q->green;
+  pixel.green=GetGreenPixelComponent(p)-(MagickRealType) q->green;
   distance+=pixel.green*pixel.green;
   if (distance > (fuzz*fuzz))
     return(MagickFalse);
-  pixel.blue=p->blue-(MagickRealType) q->blue;
+  pixel.blue=GetBluePixelComponent(p)-(MagickRealType) q->blue;
   distance+=pixel.blue*pixel.blue;
   if (distance > (fuzz*fuzz))
     return(MagickFalse);
diff --git a/magick/effect.c b/magick/effect.c
index 2ceff0e..2fc0f5f 100644
--- a/magick/effect.c
+++ b/magick/effect.c
@@ -5348,14 +5348,14 @@
         }
       }
       if ((channel & RedChannel) != 0)
-        q->red=ClampToQuantum(pixel.red);
+        SetRedPixelComponent(q,ClampToQuantum(pixel.red));
       if ((channel & GreenChannel) != 0)
-        q->green=ClampToQuantum(pixel.green);
+        SetGreenPixelComponent(q,ClampToQuantum(pixel.green));
       if ((channel & BlueChannel) != 0)
-        q->blue=ClampToQuantum(pixel.blue);
+        SetBluePixelComponent(q,ClampToQuantum(pixel.blue));
       if (((channel & OpacityChannel) != 0) &&
           (image->matte != MagickFalse))
-        q->opacity=ClampToQuantum(pixel.opacity);
+        SetOpacityPixelComponent(q,ClampToQuantum(pixel.opacity));
       if (((channel & IndexChannel) != 0) &&
           (image->colorspace == CMYKColorspace))
         statistic_indexes[x]=(IndexPacket) ClampToQuantum(pixel.index);
@@ -5526,38 +5526,38 @@
     {
       if ((channel & RedChannel) != 0)
         {
-          pixel.red=p->red-(MagickRealType) q->red;
+          pixel.red=GetRedPixelComponent(p)-(MagickRealType) q->red;
           if (fabs(2.0*pixel.red) < quantum_threshold)
             pixel.red=(MagickRealType) GetRedPixelComponent(p);
           else
-            pixel.red=(MagickRealType) p->red+(pixel.red*amount);
+            pixel.red=(MagickRealType) GetRedPixelComponent(p)+(pixel.red*amount);
           SetRedPixelComponent(q,ClampToQuantum(pixel.red));
         }
       if ((channel & GreenChannel) != 0)
         {
-          pixel.green=p->green-(MagickRealType) q->green;
+          pixel.green=GetGreenPixelComponent(p)-(MagickRealType) q->green;
           if (fabs(2.0*pixel.green) < quantum_threshold)
             pixel.green=(MagickRealType) GetGreenPixelComponent(p);
           else
-            pixel.green=(MagickRealType) p->green+(pixel.green*amount);
+            pixel.green=(MagickRealType) GetGreenPixelComponent(p)+(pixel.green*amount);
           SetGreenPixelComponent(q,ClampToQuantum(pixel.green));
         }
       if ((channel & BlueChannel) != 0)
         {
-          pixel.blue=p->blue-(MagickRealType) q->blue;
+          pixel.blue=GetBluePixelComponent(p)-(MagickRealType) q->blue;
           if (fabs(2.0*pixel.blue) < quantum_threshold)
             pixel.blue=(MagickRealType) GetBluePixelComponent(p);
           else
-            pixel.blue=(MagickRealType) p->blue+(pixel.blue*amount);
+            pixel.blue=(MagickRealType) GetBluePixelComponent(p)+(pixel.blue*amount);
           SetBluePixelComponent(q,ClampToQuantum(pixel.blue));
         }
       if ((channel & OpacityChannel) != 0)
         {
-          pixel.opacity=p->opacity-(MagickRealType) q->opacity;
+          pixel.opacity=GetOpacityPixelComponent(p)-(MagickRealType) q->opacity;
           if (fabs(2.0*pixel.opacity) < quantum_threshold)
             pixel.opacity=(MagickRealType) GetOpacityPixelComponent(p);
           else
-            pixel.opacity=p->opacity+(pixel.opacity*amount);
+            pixel.opacity=GetOpacityPixelComponent(p)+(pixel.opacity*amount);
           SetOpacityPixelComponent(q,ClampToQuantum(pixel.opacity));
         }
       if (((channel & IndexChannel) != 0) &&
diff --git a/magick/feature.c b/magick/feature.c
index 9667d0b..6b4a2aa 100644
--- a/magick/feature.c
+++ b/magick/feature.c
@@ -247,15 +247,15 @@
     indexes=GetCacheViewVirtualIndexQueue(image_view);
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      grays[ScaleQuantumToMap(p->red)].red=
-        ScaleQuantumToMap(p->red);
-      grays[ScaleQuantumToMap(p->green)].green=
-        ScaleQuantumToMap(p->green);
-      grays[ScaleQuantumToMap(p->blue)].blue=
-        ScaleQuantumToMap(p->blue);
+      grays[ScaleQuantumToMap(GetRedPixelComponent(p))].red=
+        ScaleQuantumToMap(GetRedPixelComponent(p));
+      grays[ScaleQuantumToMap(GetGreenPixelComponent(p))].green=
+        ScaleQuantumToMap(GetGreenPixelComponent(p));
+      grays[ScaleQuantumToMap(GetBluePixelComponent(p))].blue=
+        ScaleQuantumToMap(GetBluePixelComponent(p));
       if (image->matte != MagickFalse)
-        grays[ScaleQuantumToMap(p->opacity)].opacity=
-          ScaleQuantumToMap(p->opacity);
+        grays[ScaleQuantumToMap(GetOpacityPixelComponent(p))].opacity=
+          ScaleQuantumToMap(GetOpacityPixelComponent(p));
       if (image->colorspace == CMYKColorspace)
         grays[ScaleQuantumToMap(indexes[x])].index=
           ScaleQuantumToMap(indexes[x]);
@@ -473,7 +473,7 @@
         }
         u=0;
         v=0;
-        while (grays[u].red != ScaleQuantumToMap(p->red))
+        while (grays[u].red != ScaleQuantumToMap(GetRedPixelComponent(p)))
           u++;
         while (grays[v].red != ScaleQuantumToMap((p+offset)->red))
           v++;
@@ -481,7 +481,7 @@
         cooccurrence[v][u].direction[i].red++;
         u=0;
         v=0;
-        while (grays[u].green != ScaleQuantumToMap(p->green))
+        while (grays[u].green != ScaleQuantumToMap(GetGreenPixelComponent(p)))
           u++;
         while (grays[v].green != ScaleQuantumToMap((p+offset)->green))
           v++;
@@ -489,7 +489,7 @@
         cooccurrence[v][u].direction[i].green++;
         u=0;
         v=0;
-        while (grays[u].blue != ScaleQuantumToMap(p->blue))
+        while (grays[u].blue != ScaleQuantumToMap(GetBluePixelComponent(p)))
           u++;
         while (grays[v].blue != ScaleQuantumToMap((p+offset)->blue))
           v++;
@@ -499,7 +499,7 @@
           {
             u=0;
             v=0;
-            while (grays[u].opacity != ScaleQuantumToMap(p->opacity))
+            while (grays[u].opacity != ScaleQuantumToMap(GetOpacityPixelComponent(p)))
               u++;
             while (grays[v].opacity != ScaleQuantumToMap((p+offset)->opacity))
               v++;
diff --git a/magick/fx.c b/magick/fx.c
index 53d031f..6ab7674 100644
--- a/magick/fx.c
+++ b/magick/fx.c
@@ -388,16 +388,16 @@
     {
       if ((channel & RedChannel) != 0)
         q->red=ClampToQuantum(GenerateDifferentialNoise(random_info[id],
-          p->red,noise_type,attenuate));
+          GetRedPixelComponent(p),noise_type,attenuate));
       if ((channel & GreenChannel) != 0)
         q->green=ClampToQuantum(GenerateDifferentialNoise(random_info[id],
-          p->green,noise_type,attenuate));
+          GetGreenPixelComponent(p),noise_type,attenuate));
       if ((channel & BlueChannel) != 0)
         q->blue=ClampToQuantum(GenerateDifferentialNoise(random_info[id],
-          p->blue,noise_type,attenuate));
+          GetBluePixelComponent(p),noise_type,attenuate));
       if ((channel & OpacityChannel) != 0)
         q->opacity=ClampToQuantum(GenerateDifferentialNoise(random_info[id],
-          p->opacity,noise_type,attenuate));
+          GetOpacityPixelComponent(p),noise_type,attenuate));
       if (((channel & IndexChannel) != 0) &&
           (image->colorspace == CMYKColorspace))
         noise_indexes[x]=(IndexPacket) ClampToQuantum(GenerateDifferentialNoise(
@@ -541,17 +541,17 @@
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       quantum=GetRedPixelComponent(p);
-      if (p->green < quantum)
+      if (GetGreenPixelComponent(p) < quantum)
         quantum=GetGreenPixelComponent(p);
-      if (p->blue < quantum)
+      if (GetBluePixelComponent(p) < quantum)
         quantum=GetBluePixelComponent(p);
-      pixel.red=0.5*(p->red+factor*quantum);
-      pixel.green=0.5*(p->green+factor*quantum);
-      pixel.blue=0.5*(p->blue+factor*quantum);
+      pixel.red=0.5*(GetRedPixelComponent(p)+factor*quantum);
+      pixel.green=0.5*(GetGreenPixelComponent(p)+factor*quantum);
+      pixel.blue=0.5*(GetBluePixelComponent(p)+factor*quantum);
       quantum=GetRedPixelComponent(p);
-      if (p->green > quantum)
+      if (GetGreenPixelComponent(p) > quantum)
         quantum=GetGreenPixelComponent(p);
-      if (p->blue > quantum)
+      if (GetBluePixelComponent(p) > quantum)
         quantum=GetBluePixelComponent(p);
       pixel.red=0.5*(pixel.red+factor*quantum);
       pixel.green=0.5*(pixel.green+factor*quantum);
@@ -783,13 +783,13 @@
       }
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      q->red=(Quantum) ((p->red*(100.0-pixel.red)+
+      q->red=(Quantum) ((GetRedPixelComponent(p)*(100.0-pixel.red)+
         colorize.red*pixel.red)/100.0);
-      q->green=(Quantum) ((p->green*(100.0-pixel.green)+
+      q->green=(Quantum) ((GetGreenPixelComponent(p)*(100.0-pixel.green)+
         colorize.green*pixel.green)/100.0);
-      q->blue=(Quantum) ((p->blue*(100.0-pixel.blue)+
+      q->blue=(Quantum) ((GetBluePixelComponent(p)*(100.0-pixel.blue)+
         colorize.blue*pixel.blue)/100.0);
-      q->opacity=(Quantum) ((p->opacity*(100.0-pixel.opacity)+
+      q->opacity=(Quantum) ((GetOpacityPixelComponent(p)*(100.0-pixel.opacity)+
         colorize.opacity*pixel.opacity)/100.0);
       p++;
       q++;
@@ -993,10 +993,10 @@
       height=color_matrix->height > 6 ? 6UL : color_matrix->height;
       for (v=0; v < (ssize_t) height; v++)
       {
-        pixel=ColorMatrix[v][0]*p->red+ColorMatrix[v][1]*p->green+
-          ColorMatrix[v][2]*p->blue;
+        pixel=ColorMatrix[v][0]*GetRedPixelComponent(p)+ColorMatrix[v][1]*GetGreenPixelComponent(p)+
+          ColorMatrix[v][2]*GetBluePixelComponent(p);
         if (image->matte != MagickFalse)
-          pixel+=ColorMatrix[v][3]*(QuantumRange-p->opacity);
+          pixel+=ColorMatrix[v][3]*(QuantumRange-GetOpacityPixelComponent(p));
         if (image->colorspace == CMYKColorspace)
           pixel+=ColorMatrix[v][4]*indexes[x];
         pixel+=QuantumRange*ColorMatrix[v][5];
@@ -4798,7 +4798,7 @@
       r->red=GetRedPixelComponent(p);
       r->green=q->green;
       r->blue=q->blue;
-      r->opacity=(Quantum) ((p->opacity+q->opacity)/2);
+      r->opacity=(Quantum) ((GetOpacityPixelComponent(p)+q->opacity)/2);
       p++;
       q++;
       r++;
@@ -5155,16 +5155,16 @@
       MagickRealType
         weight;
 
-      weight=QuantumScale*p->red-0.5;
-      pixel.red=(MagickRealType) p->red+color_vector.red*(1.0-(4.0*
+      weight=QuantumScale*GetRedPixelComponent(p)-0.5;
+      pixel.red=(MagickRealType) GetRedPixelComponent(p)+color_vector.red*(1.0-(4.0*
         (weight*weight)));
       SetRedPixelComponent(q,ClampToQuantum(pixel.red));
-      weight=QuantumScale*p->green-0.5;
-      pixel.green=(MagickRealType) p->green+color_vector.green*(1.0-(4.0*
+      weight=QuantumScale*GetGreenPixelComponent(p)-0.5;
+      pixel.green=(MagickRealType) GetGreenPixelComponent(p)+color_vector.green*(1.0-(4.0*
         (weight*weight)));
       SetGreenPixelComponent(q,ClampToQuantum(pixel.green));
-      weight=QuantumScale*p->blue-0.5;
-      pixel.blue=(MagickRealType) p->blue+color_vector.blue*(1.0-(4.0*
+      weight=QuantumScale*GetBluePixelComponent(p)-0.5;
+      pixel.blue=(MagickRealType) GetBluePixelComponent(p)+color_vector.blue*(1.0-(4.0*
         (weight*weight)));
       SetBluePixelComponent(q,ClampToQuantum(pixel.blue));
       SetOpacityPixelComponent(q,GetOpacityPixelComponent(p));
diff --git a/magick/identify.c b/magick/identify.c
index ecd4943..02de8e8 100644
--- a/magick/identify.c
+++ b/magick/identify.c
@@ -600,7 +600,7 @@
             indexes=GetVirtualIndexQueue(image);
             for (x=0; x < (ssize_t) image->columns; x++)
             {
-              if (p->opacity == (Quantum) TransparentOpacity)
+              if (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity)
                 break;
               p++;
             }
diff --git a/magick/layer.c b/magick/layer.c
index 10b8e11..a7f3d08 100644
--- a/magick/layer.c
+++ b/magick/layer.c
@@ -191,7 +191,7 @@
       break;
     for (x=0; x < (ssize_t) bounds->width; x++)
     {
-      if ((p->opacity <= (Quantum) (QuantumRange/2)) &&
+      if ((GetOpacityPixelComponent(p) <= (Quantum) (QuantumRange/2)) &&
           (q->opacity > (Quantum) (QuantumRange/2)))
         break;
       p++;
@@ -538,7 +538,7 @@
   if (method == CompareAnyLayer)
     return((MagickBooleanType)(IsMagickColorSimilar(p,q) == MagickFalse));
 
-  o1 = (p->matte != MagickFalse) ? p->opacity : OpaqueOpacity;
+  o1 = (p->matte != MagickFalse) ? GetOpacityPixelComponent(p) : OpaqueOpacity;
   o2 = (q->matte != MagickFalse) ? q->opacity : OpaqueOpacity;
 
   /*
diff --git a/magick/prepress.c b/magick/prepress.c
index 64c39cf..8a593f6 100644
--- a/magick/prepress.c
+++ b/magick/prepress.c
@@ -134,7 +134,7 @@
     indexes=GetCacheViewVirtualIndexQueue(image_view);
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      density=(double) p->red+p->green+p->blue+indexes[x];
+      density=(double) GetRedPixelComponent(p)+GetGreenPixelComponent(p)+GetBluePixelComponent(p)+indexes[x];
       if (density > total_ink_density)
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   #pragma omp critical (MagickCore_GetImageTotalInkDensity)
diff --git a/magick/quantize.c b/magick/quantize.c
index c4c817c..5138135 100644
--- a/magick/quantize.c
+++ b/magick/quantize.c
@@ -1091,15 +1091,15 @@
           alpha=(MagickRealType) (QuantumScale*GetAlphaPixelComponent(p));
           beta=(MagickRealType) (QuantumScale*GetAlphaPixelComponent(q));
         }
-      pixel=alpha*p->red-beta*q->red;
+      pixel=alpha*GetRedPixelComponent(p)-beta*q->red;
       distance=pixel*pixel;
       if (distance <= cube_info->distance)
         {
-          pixel=alpha*p->green-beta*q->green;
+          pixel=alpha*GetGreenPixelComponent(p)-beta*q->green;
           distance+=pixel*pixel;
           if (distance <= cube_info->distance)
             {
-              pixel=alpha*p->blue-beta*q->blue;
+              pixel=alpha*GetBluePixelComponent(p)-beta*q->blue;
               distance+=pixel*pixel;
               if (distance <= cube_info->distance)
                 {
@@ -2182,17 +2182,17 @@
           beta=(MagickRealType) (QuantumScale*(QuantumRange-
             image->colormap[index].opacity));
         }
-      distance=fabs(alpha*p->red-beta*image->colormap[index].red);
+      distance=fabs(alpha*GetRedPixelComponent(p)-beta*image->colormap[index].red);
       mean_error_per_pixel+=distance;
       mean_error+=distance*distance;
       if (distance > maximum_error)
         maximum_error=distance;
-      distance=fabs(alpha*p->green-beta*image->colormap[index].green);
+      distance=fabs(alpha*GetGreenPixelComponent(p)-beta*image->colormap[index].green);
       mean_error_per_pixel+=distance;
       mean_error+=distance*distance;
       if (distance > maximum_error)
         maximum_error=distance;
-      distance=fabs(alpha*p->blue-beta*image->colormap[index].blue);
+      distance=fabs(alpha*GetBluePixelComponent(p)-beta*image->colormap[index].blue);
       mean_error_per_pixel+=distance;
       mean_error+=distance*distance;
       if (distance > maximum_error)
diff --git a/magick/quantum-export.c b/magick/quantum-export.c
index 82593be..a378559 100644
--- a/magick/quantum-export.c
+++ b/magick/quantum-export.c
@@ -511,25 +511,25 @@
           {
             pixel=(unsigned char) *indexes++;
             *q=((pixel & 0x01) << 7);
-            pixel=(unsigned char) (p->opacity == (Quantum) TransparentOpacity ?
+            pixel=(unsigned char) (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity ?
               1 : 0);
             *q|=((pixel & 0x01) << 6);
             p++;
             pixel=(unsigned char) *indexes++;
             *q|=((pixel & 0x01) << 5);
-            pixel=(unsigned char) (p->opacity == (Quantum) TransparentOpacity ?
+            pixel=(unsigned char) (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity ?
               1 : 0);
             *q|=((pixel & 0x01) << 4);
             p++;
             pixel=(unsigned char) *indexes++;
             *q|=((pixel & 0x01) << 3);
-            pixel=(unsigned char) (p->opacity == (Quantum) TransparentOpacity ?
+            pixel=(unsigned char) (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity ?
               1 : 0);
             *q|=((pixel & 0x01) << 2);
             p++;
             pixel=(unsigned char) *indexes++;
             *q|=((pixel & 0x01) << 1);
-            pixel=(unsigned char) (p->opacity == (Quantum) TransparentOpacity ?
+            pixel=(unsigned char) (GetOpacityPixelComponent(p) == (Quantum) TransparentOpacity ?
               1 : 0);
             *q|=((pixel & 0x01) << 0);
             p++;
@@ -542,7 +542,7 @@
               {
                 pixel=(unsigned char) *indexes++;
                 *q|=((pixel & 0x01) << (unsigned char) (bit+4));
-                pixel=(unsigned char) (p->opacity == (Quantum)
+                pixel=(unsigned char) (GetOpacityPixelComponent(p) == (Quantum)
                   TransparentOpacity ? 1 : 0);
                 *q|=((pixel & 0x01) << (unsigned char) (bit+4-1));
                 p++;
@@ -903,9 +903,9 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopFloatPixel(&quantum_state,(float) p->red,q);
-                q=PopFloatPixel(&quantum_state,(float) p->green,q);
-                q=PopFloatPixel(&quantum_state,(float) p->blue,q);
+                q=PopFloatPixel(&quantum_state,(float) GetRedPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetGreenPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetBluePixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -930,9 +930,9 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->red,q);
-                q=PopDoublePixel(&quantum_state,(double) p->green,q);
-                q=PopDoublePixel(&quantum_state,(double) p->blue,q);
+                q=PopDoublePixel(&quantum_state,(double) GetRedPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetGreenPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetBluePixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -1009,10 +1009,10 @@
                 {
                   switch (i)
                   {
-                    case 0: quantum=p->red; break;
-                    case 1: quantum=p->green; break;
-                    case 2: quantum=p->blue; break;
-                    case 3: quantum=(Quantum) (QuantumRange-p->opacity); break;
+                    case 0: quantum=GetRedPixelComponent(p); break;
+                    case 1: quantum=GetGreenPixelComponent(p); break;
+                    case 2: quantum=GetBluePixelComponent(p); break;
+                    case 3: quantum=(Quantum) (QuantumRange-GetOpacityPixelComponent(p)); break;
                   }
                   switch (n % 3)
                   {
@@ -1058,7 +1058,7 @@
                 q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,
                   q);
                 pixel=(unsigned int) ScaleQuantumToAny((Quantum) (QuantumRange-
-                  p->opacity),range);
+                  GetOpacityPixelComponent(p)),range);
                 q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,
                   q);
                 p++;
@@ -1075,7 +1075,7 @@
             pixel=(unsigned int) ScaleQuantumToAny(GetBluePixelComponent(p),range);
             q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny((Quantum) (QuantumRange-
-              p->opacity),range);
+              GetOpacityPixelComponent(p)),range);
             q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
             p++;
             q+=quantum_info->pad;
@@ -1135,9 +1135,9 @@
                 float
                   pixel;
 
-                q=PopFloatPixel(&quantum_state,(float) p->red,q);
-                q=PopFloatPixel(&quantum_state,(float) p->green,q);
-                q=PopFloatPixel(&quantum_state,(float) p->blue,q);
+                q=PopFloatPixel(&quantum_state,(float) GetRedPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetGreenPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetBluePixelComponent(p),q);
                 pixel=(float) GetAlphaPixelComponent(p);
                 q=PopFloatPixel(&quantum_state,pixel,q);
                 p++;
@@ -1169,9 +1169,9 @@
 
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->red,q);
-                q=PopDoublePixel(&quantum_state,(double) p->green,q);
-                q=PopDoublePixel(&quantum_state,(double) p->blue,q);
+                q=PopDoublePixel(&quantum_state,(double) GetRedPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetGreenPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetBluePixelComponent(p),q);
                 pixel=(double) GetAlphaPixelComponent(p);
                 q=PopDoublePixel(&quantum_state,pixel,q);
                 p++;
@@ -1469,19 +1469,19 @@
           {
             *q='\0';
             *q|=(PixelIntensityToQuantum(p) > threshold ? black : white) << 7;
-            pixel=(unsigned char) (p->opacity == OpaqueOpacity ? 0x00 : 0x01);
+            pixel=(unsigned char) (GetOpacityPixelComponent(p) == OpaqueOpacity ? 0x00 : 0x01);
             *q|=(((int) pixel != 0 ? 0x00 : 0x01) << 6);
             p++;
             *q|=(PixelIntensityToQuantum(p) > threshold ? black : white) << 5;
-            pixel=(unsigned char) (p->opacity == OpaqueOpacity ? 0x00 : 0x01);
+            pixel=(unsigned char) (GetOpacityPixelComponent(p) == OpaqueOpacity ? 0x00 : 0x01);
             *q|=(((int) pixel != 0 ? 0x00 : 0x01) << 4);
             p++;
             *q|=(PixelIntensityToQuantum(p) > threshold ? black : white) << 3;
-            pixel=(unsigned char) (p->opacity == OpaqueOpacity ? 0x00 : 0x01);
+            pixel=(unsigned char) (GetOpacityPixelComponent(p) == OpaqueOpacity ? 0x00 : 0x01);
             *q|=(((int) pixel != 0 ? 0x00 : 0x01) << 2);
             p++;
             *q|=(PixelIntensityToQuantum(p) > threshold ? black : white) << 1;
-            pixel=(unsigned char) (p->opacity == OpaqueOpacity ? 0x00 : 0x01);
+            pixel=(unsigned char) (GetOpacityPixelComponent(p) == OpaqueOpacity ? 0x00 : 0x01);
             *q|=(((int) pixel != 0 ? 0x00 : 0x01) << 0);
             p++;
             q++;
@@ -1493,7 +1493,7 @@
               {
                 *q|=(PixelIntensityToQuantum(p) > threshold ? black : white) <<
                   (7-bit);
-                pixel=(unsigned char) (p->opacity == OpaqueOpacity ? 0x00 :
+                pixel=(unsigned char) (GetOpacityPixelComponent(p) == OpaqueOpacity ? 0x00 :
                   0x01);
                 *q|=(((int) pixel != 0 ? 0x00 : 0x01) << (unsigned char)
                   (7-bit-1));
@@ -1692,7 +1692,7 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopFloatPixel(&quantum_state,(float) p->red,q);
+                q=PopFloatPixel(&quantum_state,(float) GetRedPixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -1713,7 +1713,7 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->red,q);
+                q=PopDoublePixel(&quantum_state,(double) GetRedPixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -1789,7 +1789,7 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopFloatPixel(&quantum_state,(float) p->green,q);
+                q=PopFloatPixel(&quantum_state,(float) GetGreenPixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -1810,7 +1810,7 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->green,q);
+                q=PopDoublePixel(&quantum_state,(double) GetGreenPixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -1886,7 +1886,7 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopFloatPixel(&quantum_state,(float) p->blue,q);
+                q=PopFloatPixel(&quantum_state,(float) GetBluePixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -1907,7 +1907,7 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->blue,q);
+                q=PopDoublePixel(&quantum_state,(double) GetBluePixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -2089,7 +2089,7 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopFloatPixel(&quantum_state,(float) p->opacity,q);
+                q=PopFloatPixel(&quantum_state,(float) GetOpacityPixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -2110,7 +2110,7 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->opacity,q);
+                q=PopDoublePixel(&quantum_state,(double) GetOpacityPixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -2459,9 +2459,9 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopFloatPixel(&quantum_state,(float) p->red,q);
-                q=PopFloatPixel(&quantum_state,(float) p->green,q);
-                q=PopFloatPixel(&quantum_state,(float) p->blue,q);
+                q=PopFloatPixel(&quantum_state,(float) GetRedPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetGreenPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetBluePixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -2486,9 +2486,9 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->red,q);
-                q=PopDoublePixel(&quantum_state,(double) p->green,q);
-                q=PopDoublePixel(&quantum_state,(double) p->blue,q);
+                q=PopDoublePixel(&quantum_state,(double) GetRedPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetGreenPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetBluePixelComponent(p),q);
                 p++;
                 q+=quantum_info->pad;
               }
@@ -2566,10 +2566,10 @@
                 {
                   switch (i)
                   {
-                    case 0: quantum=p->red; break;
-                    case 1: quantum=p->green; break;
-                    case 2: quantum=p->blue; break;
-                    case 3: quantum=(Quantum) (QuantumRange-p->opacity); break;
+                    case 0: quantum=GetRedPixelComponent(p); break;
+                    case 1: quantum=GetGreenPixelComponent(p); break;
+                    case 2: quantum=GetBluePixelComponent(p); break;
+                    case 3: quantum=(Quantum) (QuantumRange-GetOpacityPixelComponent(p)); break;
                   }
                   switch (n % 3)
                   {
@@ -2615,7 +2615,7 @@
                 q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,
                   q);
                 pixel=(unsigned int) ScaleQuantumToAny((Quantum) (QuantumRange-
-                  p->opacity),range);
+                  GetOpacityPixelComponent(p)),range);
                 q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,
                   q);
                 p++;
@@ -2632,7 +2632,7 @@
             pixel=(unsigned int) ScaleQuantumToAny(GetBluePixelComponent(p),range);
             q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny((Quantum) (QuantumRange-
-              p->opacity),range);
+              GetOpacityPixelComponent(p)),range);
             q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
             p++;
             q+=quantum_info->pad;
@@ -2692,9 +2692,9 @@
                 float
                   pixel;
 
-                q=PopFloatPixel(&quantum_state,(float) p->red,q);
-                q=PopFloatPixel(&quantum_state,(float) p->green,q);
-                q=PopFloatPixel(&quantum_state,(float) p->blue,q);
+                q=PopFloatPixel(&quantum_state,(float) GetRedPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetGreenPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetBluePixelComponent(p),q);
                 pixel=(float) GetAlphaPixelComponent(p);
                 q=PopFloatPixel(&quantum_state,pixel,q);
                 p++;
@@ -2726,9 +2726,9 @@
 
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->red,q);
-                q=PopDoublePixel(&quantum_state,(double) p->green,q);
-                q=PopDoublePixel(&quantum_state,(double) p->blue,q);
+                q=PopDoublePixel(&quantum_state,(double) GetRedPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetGreenPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetBluePixelComponent(p),q);
                 pixel=(double) GetAlphaPixelComponent(p);
                 q=PopDoublePixel(&quantum_state,pixel,q);
                 p++;
@@ -2837,9 +2837,9 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopFloatPixel(&quantum_state,(float) p->red,q);
-                q=PopFloatPixel(&quantum_state,(float) p->green,q);
-                q=PopFloatPixel(&quantum_state,(float) p->blue,q);
+                q=PopFloatPixel(&quantum_state,(float) GetRedPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetGreenPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetBluePixelComponent(p),q);
                 q=PopFloatPixel(&quantum_state,(float) indexes[x],q);
                 p++;
                 q+=quantum_info->pad;
@@ -2867,9 +2867,9 @@
             {
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->red,q);
-                q=PopDoublePixel(&quantum_state,(double) p->green,q);
-                q=PopDoublePixel(&quantum_state,(double) p->blue,q);
+                q=PopDoublePixel(&quantum_state,(double) GetRedPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetGreenPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetBluePixelComponent(p),q);
                 q=PopDoublePixel(&quantum_state,(double) indexes[x],q);
                 p++;
                 q+=quantum_info->pad;
@@ -2990,9 +2990,9 @@
                 float
                   pixel;
 
-                q=PopFloatPixel(&quantum_state,(float) p->red,q);
-                q=PopFloatPixel(&quantum_state,(float) p->green,q);
-                q=PopFloatPixel(&quantum_state,(float) p->blue,q);
+                q=PopFloatPixel(&quantum_state,(float) GetRedPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetGreenPixelComponent(p),q);
+                q=PopFloatPixel(&quantum_state,(float) GetBluePixelComponent(p),q);
                 q=PopFloatPixel(&quantum_state,(float) indexes[x],q);
                 pixel=(float) (GetAlphaPixelComponent(p));
                 q=PopFloatPixel(&quantum_state,pixel,q);
@@ -3028,9 +3028,9 @@
 
               for (x=0; x < (ssize_t) number_pixels; x++)
               {
-                q=PopDoublePixel(&quantum_state,(double) p->red,q);
-                q=PopDoublePixel(&quantum_state,(double) p->green,q);
-                q=PopDoublePixel(&quantum_state,(double) p->blue,q);
+                q=PopDoublePixel(&quantum_state,(double) GetRedPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetGreenPixelComponent(p),q);
+                q=PopDoublePixel(&quantum_state,(double) GetBluePixelComponent(p),q);
                 q=PopDoublePixel(&quantum_state,(double) indexes[x],q);
                 pixel=(double) (GetAlphaPixelComponent(p));
                 q=PopDoublePixel(&quantum_state,pixel,q);
diff --git a/magick/shear.c b/magick/shear.c
index d5d96a1..32fb63d 100644
--- a/magick/shear.c
+++ b/magick/shear.c
@@ -739,9 +739,9 @@
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       byte<<=1;
-      if (((MagickRealType) p->red < threshold) ||
-          ((MagickRealType) p->green < threshold) ||
-          ((MagickRealType) p->blue < threshold))
+      if (((MagickRealType) GetRedPixelComponent(p) < threshold) ||
+          ((MagickRealType) GetGreenPixelComponent(p) < threshold) ||
+          ((MagickRealType) GetBluePixelComponent(p) < threshold))
         byte|=0x01;
       bit++;
       if (bit == 8)
@@ -790,9 +790,9 @@
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       byte<<=1;
-      if (((MagickRealType) p->red < threshold) ||
-          ((MagickRealType) p->green < threshold) ||
-          ((MagickRealType) p->blue < threshold))
+      if (((MagickRealType) GetRedPixelComponent(p) < threshold) ||
+          ((MagickRealType) GetGreenPixelComponent(p) < threshold) ||
+          ((MagickRealType) GetBluePixelComponent(p) < threshold))
         byte|=0x01;
       bit++;
       if (bit == 8)
@@ -1550,7 +1550,7 @@
             }
           SetMagickPixelPacket(image,p,indexes,&source);
           MagickPixelCompositeAreaBlend(&pixel,(MagickRealType) pixel.opacity,
-            &source,(MagickRealType) p->opacity,area,&destination);
+            &source,(MagickRealType) GetOpacityPixelComponent(p),area,&destination);
           SetPixelPacket(image,&destination,q++,shear_indexes++);
           SetMagickPixelPacket(image,p++,indexes++,&pixel);
         }
@@ -1580,7 +1580,7 @@
             continue;
           SetMagickPixelPacket(image,p,indexes,&source);
           MagickPixelCompositeAreaBlend(&pixel,(MagickRealType) pixel.opacity,
-            &source,(MagickRealType) p->opacity,area,&destination);
+            &source,(MagickRealType) GetOpacityPixelComponent(p),area,&destination);
           SetPixelPacket(image,&destination,q,shear_indexes);
           SetMagickPixelPacket(image,p,indexes,&pixel);
         }
@@ -1770,7 +1770,7 @@
             }
           SetMagickPixelPacket(image,p,indexes,&source);
           MagickPixelCompositeAreaBlend(&pixel,(MagickRealType) pixel.opacity,
-            &source,(MagickRealType) p->opacity,area,&destination);
+            &source,(MagickRealType) GetOpacityPixelComponent(p),area,&destination);
           SetPixelPacket(image,&destination,q++,shear_indexes++);
           SetMagickPixelPacket(image,p++,indexes++,&pixel);
         }
@@ -1800,7 +1800,7 @@
             continue;
           SetMagickPixelPacket(image,p,indexes,&source);
           MagickPixelCompositeAreaBlend(&pixel,(MagickRealType) pixel.opacity,
-            &source,(MagickRealType) p->opacity,area,&destination);
+            &source,(MagickRealType) GetOpacityPixelComponent(p),area,&destination);
           SetPixelPacket(image,&destination,q,shear_indexes);
           SetMagickPixelPacket(image,p,indexes,&pixel);
         }
diff --git a/magick/statistic.c b/magick/statistic.c
index c0967b5..1f6ca54 100644
--- a/magick/statistic.c
+++ b/magick/statistic.c
@@ -555,13 +555,13 @@
             }
           indexes=GetCacheViewVirtualIndexQueue(image_view);
           evaluate_pixel[i].red=ApplyEvaluateOperator(random_info[id],
-            p->red,op,evaluate_pixel[i].red);
+            GetRedPixelComponent(p),op,evaluate_pixel[i].red);
           evaluate_pixel[i].green=ApplyEvaluateOperator(random_info[id],
-            p->green,op,evaluate_pixel[i].green);
+            GetGreenPixelComponent(p),op,evaluate_pixel[i].green);
           evaluate_pixel[i].blue=ApplyEvaluateOperator(random_info[id],
-            p->blue,op,evaluate_pixel[i].blue);
+            GetBluePixelComponent(p),op,evaluate_pixel[i].blue);
           evaluate_pixel[i].opacity=ApplyEvaluateOperator(random_info[id],
-            p->opacity,op,evaluate_pixel[i].opacity);
+            GetOpacityPixelComponent(p),op,evaluate_pixel[i].opacity);
           if (evaluate_image->colorspace == CMYKColorspace)
             evaluate_pixel[i].index=ApplyEvaluateOperator(random_info[id],
               *indexes,op,evaluate_pixel[i].index);
@@ -658,13 +658,13 @@
         for (x=0; x < (ssize_t) next->columns; x++)
         {
           evaluate_pixel[x].red=ApplyEvaluateOperator(random_info[id],
-            p->red,i == 0 ? AddEvaluateOperator : op,evaluate_pixel[x].red);
+            GetRedPixelComponent(p),i == 0 ? AddEvaluateOperator : op,evaluate_pixel[x].red);
           evaluate_pixel[x].green=ApplyEvaluateOperator(random_info[id],
-            p->green,i == 0 ? AddEvaluateOperator : op,evaluate_pixel[x].green);
+            GetGreenPixelComponent(p),i == 0 ? AddEvaluateOperator : op,evaluate_pixel[x].green);
           evaluate_pixel[x].blue=ApplyEvaluateOperator(random_info[id],
-            p->blue,i == 0 ? AddEvaluateOperator : op,evaluate_pixel[x].blue);
+            GetBluePixelComponent(p),i == 0 ? AddEvaluateOperator : op,evaluate_pixel[x].blue);
           evaluate_pixel[x].opacity=ApplyEvaluateOperator(random_info[id],
-            p->opacity,i == 0 ? AddEvaluateOperator : op,
+            GetOpacityPixelComponent(p),i == 0 ? AddEvaluateOperator : op,
             evaluate_pixel[x].opacity);
           if (evaluate_image->colorspace == CMYKColorspace)
             evaluate_pixel[x].index=ApplyEvaluateOperator(random_info[id],
@@ -1340,36 +1340,36 @@
       if ((channel & RedChannel) != 0)
         {
           mean+=GetRedPixelComponent(p);
-          sum_squares+=(double) p->red*GetRedPixelComponent(p);
-          sum_cubes+=(double) p->red*p->red*GetRedPixelComponent(p);
-          sum_fourth_power+=(double) p->red*p->red*p->red*
+          sum_squares+=(double) GetRedPixelComponent(p)*GetRedPixelComponent(p);
+          sum_cubes+=(double) GetRedPixelComponent(p)*GetRedPixelComponent(p)*GetRedPixelComponent(p);
+          sum_fourth_power+=(double) GetRedPixelComponent(p)*GetRedPixelComponent(p)*GetRedPixelComponent(p)*
             GetRedPixelComponent(p);
           area++;
         }
       if ((channel & GreenChannel) != 0)
         {
           mean+=GetGreenPixelComponent(p);
-          sum_squares+=(double) p->green*GetGreenPixelComponent(p);
-          sum_cubes+=(double) p->green*p->green*GetGreenPixelComponent(p);
-          sum_fourth_power+=(double) p->green*p->green*p->green*
+          sum_squares+=(double) GetGreenPixelComponent(p)*GetGreenPixelComponent(p);
+          sum_cubes+=(double) GetGreenPixelComponent(p)*GetGreenPixelComponent(p)*GetGreenPixelComponent(p);
+          sum_fourth_power+=(double) GetGreenPixelComponent(p)*GetGreenPixelComponent(p)*GetGreenPixelComponent(p)*
             GetGreenPixelComponent(p);
           area++;
         }
       if ((channel & BlueChannel) != 0)
         {
           mean+=GetBluePixelComponent(p);
-          sum_squares+=(double) p->blue*GetBluePixelComponent(p);
-          sum_cubes+=(double) p->blue*p->blue*GetBluePixelComponent(p);
-          sum_fourth_power+=(double) p->blue*p->blue*p->blue*
+          sum_squares+=(double) GetBluePixelComponent(p)*GetBluePixelComponent(p);
+          sum_cubes+=(double) GetBluePixelComponent(p)*GetBluePixelComponent(p)*GetBluePixelComponent(p);
+          sum_fourth_power+=(double) GetBluePixelComponent(p)*GetBluePixelComponent(p)*GetBluePixelComponent(p)*
             GetBluePixelComponent(p);
           area++;
         }
       if ((channel & OpacityChannel) != 0)
         {
           mean+=GetOpacityPixelComponent(p);
-          sum_squares+=(double) p->opacity*GetOpacityPixelComponent(p);
-          sum_cubes+=(double) p->opacity*p->opacity*GetOpacityPixelComponent(p);
-          sum_fourth_power+=(double) p->opacity*p->opacity*p->opacity*
+          sum_squares+=(double) GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p);
+          sum_cubes+=(double) GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p);
+          sum_fourth_power+=(double) GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p)*
             GetOpacityPixelComponent(p);
           area++;
         }
@@ -1661,7 +1661,7 @@
               depth=channel_statistics[OpacityChannel].depth;
               range=GetQuantumRange(depth);
               status=GetOpacityPixelComponent(p) != ScaleAnyToQuantum(ScaleQuantumToAny(
-                p->opacity,range),range) ? MagickTrue : MagickFalse;
+                GetOpacityPixelComponent(p),range),range) ? MagickTrue : MagickFalse;
               if (status != MagickFalse)
                 {
                   channel_statistics[OpacityChannel].depth++;
@@ -1684,58 +1684,58 @@
                 }
             }
         }
-      if ((double) p->red < channel_statistics[RedChannel].minima)
+      if ((double) GetRedPixelComponent(p) < channel_statistics[RedChannel].minima)
         channel_statistics[RedChannel].minima=(double) GetRedPixelComponent(p);
-      if ((double) p->red > channel_statistics[RedChannel].maxima)
+      if ((double) GetRedPixelComponent(p) > channel_statistics[RedChannel].maxima)
         channel_statistics[RedChannel].maxima=(double) GetRedPixelComponent(p);
       channel_statistics[RedChannel].sum+=GetRedPixelComponent(p);
-      channel_statistics[RedChannel].sum_squared+=(double) p->red*
+      channel_statistics[RedChannel].sum_squared+=(double) GetRedPixelComponent(p)*
         GetRedPixelComponent(p);
-      channel_statistics[RedChannel].sum_cubed+=(double) p->red*p->red*
+      channel_statistics[RedChannel].sum_cubed+=(double) GetRedPixelComponent(p)*GetRedPixelComponent(p)*
         GetRedPixelComponent(p);
-      channel_statistics[RedChannel].sum_fourth_power+=(double) p->red*p->red*
-        p->red*GetRedPixelComponent(p);
-      if ((double) p->green < channel_statistics[GreenChannel].minima)
+      channel_statistics[RedChannel].sum_fourth_power+=(double) GetRedPixelComponent(p)*GetRedPixelComponent(p)*
+        GetRedPixelComponent(p)*GetRedPixelComponent(p);
+      if ((double) GetGreenPixelComponent(p) < channel_statistics[GreenChannel].minima)
         channel_statistics[GreenChannel].minima=(double)
           GetGreenPixelComponent(p);
-      if ((double) p->green > channel_statistics[GreenChannel].maxima)
+      if ((double) GetGreenPixelComponent(p) > channel_statistics[GreenChannel].maxima)
         channel_statistics[GreenChannel].maxima=(double)
           GetGreenPixelComponent(p);
       channel_statistics[GreenChannel].sum+=GetGreenPixelComponent(p);
-      channel_statistics[GreenChannel].sum_squared+=(double) p->green*
+      channel_statistics[GreenChannel].sum_squared+=(double) GetGreenPixelComponent(p)*
         GetGreenPixelComponent(p);
-      channel_statistics[GreenChannel].sum_cubed+=(double) p->green*p->green*
+      channel_statistics[GreenChannel].sum_cubed+=(double) GetGreenPixelComponent(p)*GetGreenPixelComponent(p)*
         GetGreenPixelComponent(p);
-      channel_statistics[GreenChannel].sum_fourth_power+=(double) p->green*
-        p->green*p->green*GetGreenPixelComponent(p);
-      if ((double) p->blue < channel_statistics[BlueChannel].minima)
+      channel_statistics[GreenChannel].sum_fourth_power+=(double) GetGreenPixelComponent(p)*
+        GetGreenPixelComponent(p)*GetGreenPixelComponent(p)*GetGreenPixelComponent(p);
+      if ((double) GetBluePixelComponent(p) < channel_statistics[BlueChannel].minima)
         channel_statistics[BlueChannel].minima=(double)
           GetBluePixelComponent(p);
-      if ((double) p->blue > channel_statistics[BlueChannel].maxima)
+      if ((double) GetBluePixelComponent(p) > channel_statistics[BlueChannel].maxima)
         channel_statistics[BlueChannel].maxima=(double)
           GetBluePixelComponent(p);
       channel_statistics[BlueChannel].sum+=GetBluePixelComponent(p);
-      channel_statistics[BlueChannel].sum_squared+=(double) p->blue*
+      channel_statistics[BlueChannel].sum_squared+=(double) GetBluePixelComponent(p)*
         GetBluePixelComponent(p);
-      channel_statistics[BlueChannel].sum_cubed+=(double) p->blue*p->blue*
+      channel_statistics[BlueChannel].sum_cubed+=(double) GetBluePixelComponent(p)*GetBluePixelComponent(p)*
         GetBluePixelComponent(p);
-      channel_statistics[BlueChannel].sum_fourth_power+=(double) p->blue*
-        p->blue*p->blue*GetBluePixelComponent(p);
+      channel_statistics[BlueChannel].sum_fourth_power+=(double) GetBluePixelComponent(p)*
+        GetBluePixelComponent(p)*GetBluePixelComponent(p)*GetBluePixelComponent(p);
       if (image->matte != MagickFalse)
         {
-          if ((double) p->opacity < channel_statistics[OpacityChannel].minima)
+          if ((double) GetOpacityPixelComponent(p) < channel_statistics[OpacityChannel].minima)
             channel_statistics[OpacityChannel].minima=(double)
               GetOpacityPixelComponent(p);
-          if ((double) p->opacity > channel_statistics[OpacityChannel].maxima)
+          if ((double) GetOpacityPixelComponent(p) > channel_statistics[OpacityChannel].maxima)
             channel_statistics[OpacityChannel].maxima=(double)
               GetOpacityPixelComponent(p);
           channel_statistics[OpacityChannel].sum+=GetOpacityPixelComponent(p);
           channel_statistics[OpacityChannel].sum_squared+=(double)
-            p->opacity*GetOpacityPixelComponent(p);
-          channel_statistics[OpacityChannel].sum_cubed+=(double) p->opacity*
-            p->opacity*GetOpacityPixelComponent(p);
+            GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p);
+          channel_statistics[OpacityChannel].sum_cubed+=(double) GetOpacityPixelComponent(p)*
+            GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p);
           channel_statistics[OpacityChannel].sum_fourth_power+=(double)
-            p->opacity*p->opacity*p->opacity*GetOpacityPixelComponent(p);
+            GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p)*GetOpacityPixelComponent(p);
         }
       if (image->colorspace == CMYKColorspace)
         {
diff --git a/magick/xwindow.c b/magick/xwindow.c
index 9b9ec89..8bcd9ac 100644
--- a/magick/xwindow.c
+++ b/magick/xwindow.c
@@ -107,12 +107,12 @@
   (color) : ((pow(((double) QuantumScale*(color)),1.0/(double) blue_gamma)* \
   QuantumRange)))
 #define XGammaPixel(map,color)  (size_t) (map->base_pixel+ \
-  ((ScaleQuantumToShort(XRedGamma((color)->red))*map->red_max/65535L)* \
-    map->red_mult)+ \
-  ((ScaleQuantumToShort(XGreenGamma((color)->green))*map->green_max/65535L)* \
-    map->green_mult)+ \
-  ((ScaleQuantumToShort(XBlueGamma((color)->blue))*map->blue_max/65535L)* \
-    map->blue_mult))
+  ((ScaleQuantumToShort(XRedGamma((color)->red))*maGetRedPixelComponent(p)_max/65535L)* \
+    maGetRedPixelComponent(p)_mult)+ \
+  ((ScaleQuantumToShort(XGreenGamma((color)->green))*maGetGreenPixelComponent(p)_max/65535L)* \
+    maGetGreenPixelComponent(p)_mult)+ \
+  ((ScaleQuantumToShort(XBlueGamma((color)->blue))*maGetBluePixelComponent(p)_max/65535L)* \
+    maGetBluePixelComponent(p)_mult))
 #define XGreenGamma(color) ClampToQuantum(green_gamma == 1.0 ? (double) \
   (color) : ((pow(((double) QuantumScale*(color)),1.0/(double) green_gamma)* \
   QuantumRange)))
@@ -120,9 +120,9 @@
   (color) : ((pow(((double) QuantumScale*(color)),1.0/(double) red_gamma)* \
   QuantumRange)))
 #define XStandardPixel(map,color)  (size_t) (map->base_pixel+ \
-  (((color)->red*map->red_max/65535L)*map->red_mult)+ \
-  (((color)->green*map->green_max/65535L)*map->green_mult)+ \
-  (((color)->blue*map->blue_max/65535L)*map->blue_mult))
+  (((color)->red*maGetRedPixelComponent(p)_max/65535L)*maGetRedPixelComponent(p)_mult)+ \
+  (((color)->green*maGetGreenPixelComponent(p)_max/65535L)*maGetGreenPixelComponent(p)_mult)+ \
+  (((color)->blue*maGetBluePixelComponent(p)_max/65535L)*maGetBluePixelComponent(p)_mult))
 
 #define AccentuateModulate  ScaleCharToQuantum(80)
 #define HighlightModulate  ScaleCharToQuantum(125)
@@ -6385,7 +6385,7 @@
         for (x=(int) canvas->columns-1; x >= 0; x--)
         {
           byte>>=1;
-          if (p->opacity > (QuantumRange/2))
+          if (GetOpacityPixelComponent(p) > (QuantumRange/2))
             byte|=0x80;
           bit++;
           if (bit == 8)
@@ -7012,7 +7012,7 @@
         for (x=(int) canvas->columns-1; x >= 0; x--)
         {
           byte<<=1;
-          if (p->opacity > (QuantumRange/2))
+          if (GetOpacityPixelComponent(p) > (QuantumRange/2))
             byte|=0x01;
           bit++;
           if (bit == 8)