diff --git a/Magick++/lib/Color.cpp b/Magick++/lib/Color.cpp
index a76b7fc..7905088 100644
--- a/Magick++/lib/Color.cpp
+++ b/Magick++/lib/Color.cpp
@@ -237,7 +237,8 @@
     pixel;
 
   pixel.colorspace=RGBColorspace;
-  pixel.matte=_pixelType == RGBAPixel ? MagickTrue : MagickFalse;
+  pixel.alpha_trait=_pixelType == RGBAPixel ? BlendPixelTrait :
+    UndefinedPixelTrait;
   pixel.depth=MAGICKCORE_QUANTUM_DEPTH;
   pixel.red=_pixel->red;
   pixel.green=_pixel->green;
diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp
index 6538f62..c61217e 100644
--- a/Magick++/lib/Image.cpp
+++ b/Magick++/lib/Image.cpp
@@ -1631,7 +1631,7 @@
   ChannelType channel_mask = SetImageChannelMask( image(), channel_);
   EvaluateImage( crop_image, operator_, rvalue_, &exceptionInfo );
   (void) SetPixelChannelMask( image(), channel_mask );
-  (void) CompositeImage( image(), crop_image, image()->matte != MagickFalse ?
+  (void) CompositeImage( image(), crop_image, image()->alpha_trait == BlendPixelTrait ?
     OverCompositeOp : CopyCompositeOp, MagickFalse, geometry.x, geometry.y,
     &exceptionInfo );
   crop_image = DestroyImageList(crop_image);
@@ -3374,17 +3374,17 @@
   // desired, then set the matte channel to opaque.
   ExceptionInfo exceptionInfo;
   GetExceptionInfo( &exceptionInfo );
-  if ((matteFlag_ && !constImage()->matte) ||
-      (constImage()->matte && !matteFlag_))
+  if ((matteFlag_ && !constImage()->alpha_trait) ||
+      (constImage()->alpha_trait && !matteFlag_))
     SetImageAlpha(image(),OpaqueAlpha,&exceptionInfo);
   throwException( exceptionInfo );
   (void) DestroyExceptionInfo( &exceptionInfo );
 
-  image()->matte = (MagickBooleanType) matteFlag_;
+  image()->alpha_trait = matteFlag_ ? BlendPixelTrait : UndefinedPixelTrait;
 }
 bool Magick::Image::matte ( void ) const
 {
-  if ( constImage()->matte )
+  if ( constImage()->alpha_trait == BlendPixelTrait )
     return true;
   else
     return false;
diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h
index 90b1019..40aacb5 100644
--- a/Magick++/lib/Magick++/Include.h
+++ b/Magick++/lib/Magick++/Include.h
@@ -410,6 +410,10 @@
   using MagickCore::FillToBorderMethod;
   using MagickCore::ResetMethod;
 
+  // Pixel traits
+  using MagickCore::UndefinedPixelTrait;
+  using MagickCore::BlendPixelTrait;
+
   // Preview types.  Not currently used by Magick++
   using MagickCore::PreviewType;
   using MagickCore::UndefinedPreview;
diff --git a/MagickCore/accelerate.c b/MagickCore/accelerate.c
index 0ab5f10..6883e98 100644
--- a/MagickCore/accelerate.c
+++ b/MagickCore/accelerate.c
@@ -383,9 +383,9 @@
     &convolve_info->height);
   if (status != CL_SUCCESS)
     return(MagickFalse);
-  convolve_info->matte=(cl_uint) image->matte;
+  convolve_info->alpha_trait=(cl_uint) image->alpha_trait;
   status=clSetKernelArg(convolve_info->kernel,i++,sizeof(cl_uint),(void *)
-    &convolve_info->matte);
+    &convolve_info->alpha_trait);
   if (status != CL_SUCCESS)
     return(MagickFalse);
   status=clSetKernelArg(convolve_info->kernel,i++,sizeof(cl_mem),(void *)
diff --git a/MagickCore/animate.c b/MagickCore/animate.c
index 4e62cf9..03ce235 100644
--- a/MagickCore/animate.c
+++ b/MagickCore/animate.c
@@ -883,7 +883,7 @@
         */
         for (next=images; next != (Image *) NULL; )
         {
-          next->matte=MagickFalse;
+          next->alpha_trait=UndefinedPixelTrait;
           if ((next->storage_class == DirectClass) ||
               (next->colors != images->colors) ||
               (next->colors > (size_t) visual_info->colormap_size))
@@ -922,16 +922,16 @@
     if ((resource_info->map_type != (char *) NULL) ||
         (visual_info->klass == TrueColor) ||
         (visual_info->klass == DirectColor))
-      (void) SetImageType(image_list[scene],image_list[scene]->matte ==
-        MagickFalse ? TrueColorType : TrueColorMatteType,exception);
+      (void) SetImageType(image_list[scene],image_list[scene]->alpha_trait ==
+        BlendPixelTrait ? TrueColorType : TrueColorMatteType,exception);
     if ((display_image->columns < image_list[scene]->columns) &&
         (display_image->rows < image_list[scene]->rows))
       display_image=image_list[scene];
   }
   if ((resource_info->map_type != (char *) NULL) ||
       (visual_info->klass == TrueColor) || (visual_info->klass == DirectColor))
-    (void) SetImageType(display_image,display_image->matte == MagickFalse ?
-      TrueColorType : TrueColorMatteType,exception);
+    (void) SetImageType(display_image,display_image->alpha_trait !=
+      BlendPixelTrait ? TrueColorType : TrueColorMatteType,exception);
   XMakeStandardColormap(display,visual_info,&resources,display_image,map_info,
     &pixel,exception);
   /*
@@ -1133,7 +1133,7 @@
     (void) XClearWindow(display,window_info.id);
     window_info.pixmaps[scene]=window_info.pixmap;
     window_info.matte_pixmaps[scene]=window_info.matte_pixmap;
-    if (image_list[scene]->matte)
+    if (image_list[scene]->alpha_trait)
       (void) XClearWindow(display,window_info.id);
     delay=1000*image_list[scene]->delay/MagickMax(
       image_list[scene]->ticks_per_second,1L);
@@ -1505,7 +1505,7 @@
         */
         for (next=images; next != (Image *) NULL; )
         {
-          next->matte=MagickFalse;
+          next->alpha_trait=UndefinedPixelTrait;
           if ((next->storage_class == DirectClass) ||
               (next->colors != images->colors) ||
               (next->colors > (size_t) visual_info->colormap_size))
@@ -1544,8 +1544,8 @@
     if ((resource_info->map_type != (char *) NULL) ||
         (visual_info->klass == TrueColor) ||
         (visual_info->klass == DirectColor))
-      (void) SetImageType(image_list[scene],image_list[scene]->matte ==
-        MagickFalse ? TrueColorType : TrueColorMatteType,exception);
+      (void) SetImageType(image_list[scene],image_list[scene]->alpha_trait ==
+        BlendPixelTrait ? TrueColorType : TrueColorMatteType,exception);
     if ((display_image->columns < image_list[scene]->columns) &&
         (display_image->rows < image_list[scene]->rows))
       display_image=image_list[scene];
diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c
index 4d48d7e..b26822c 100644
--- a/MagickCore/annotate.c
+++ b/MagickCore/annotate.c
@@ -1285,7 +1285,7 @@
     {
       if (image->storage_class != DirectClass)
         (void) SetImageStorageClass(image,DirectClass,exception);
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
     }
   direction=1.0;
@@ -1818,9 +1818,9 @@
       /*
         Render fill color.
       */
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
-      if (annotate_image->matte == MagickFalse)
+      if (annotate_image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(annotate_image,OpaqueAlphaChannel,
           exception);
       fill_color=draw_info->fill;
diff --git a/MagickCore/attribute.c b/MagickCore/attribute.c
index f686a11..60d7ee0 100644
--- a/MagickCore/attribute.c
+++ b/MagickCore/attribute.c
@@ -301,7 +301,7 @@
   status=MagickTrue;
   for (id=0; id < (ssize_t) number_threads; id++)
     current_depth[id]=1;
-  if ((image->storage_class == PseudoClass) && (image->matte == MagickFalse))
+  if ((image->storage_class == PseudoClass) && (image->alpha_trait != BlendPixelTrait))
     {
       register ssize_t
         i;
@@ -618,7 +618,7 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   if (image->colorspace == CMYKColorspace)
     {
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         return(ColorSeparationType);
       return(ColorSeparationMatteType);
     }
@@ -626,17 +626,17 @@
     return(BilevelType);
   if (IsImageGray(image,exception) != MagickFalse)
     {
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         return(GrayscaleMatteType);
       return(GrayscaleType);
     }
   if (IsPaletteImage(image,exception) != MagickFalse)
     {
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         return(PaletteMatteType);
       return(PaletteType);
     }
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     return(TrueColorMatteType);
   return(TrueColorType);
 }
@@ -721,7 +721,7 @@
   if (type == UndefinedType)
     return(MagickFalse);
   ((Image *) image)->type=type;
-  if ((type == GrayscaleType) && (image->matte != MagickFalse))
+  if ((type == GrayscaleType) && (image->alpha_trait == BlendPixelTrait))
     ((Image *) image)->type=GrayscaleMatteType;
   return(MagickTrue);
 }
@@ -856,7 +856,7 @@
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     return(MagickTrue);
   image_view=AcquireVirtualCacheView(image,exception);
   for (y=0; y < (ssize_t) image->rows; y++)
@@ -1168,21 +1168,21 @@
           status=QuantizeImage(quantize_info,image,exception);
           quantize_info=DestroyQuantizeInfo(quantize_info);
         }
-      image->matte=MagickFalse;
+      image->alpha_trait=UndefinedPixelTrait;
       break;
     }
     case GrayscaleType:
     {
       if (IsImageGray(image,exception) == MagickFalse)
         status=TransformImageColorspace(image,GRAYColorspace,exception);
-      image->matte=MagickFalse;
+      image->alpha_trait=UndefinedPixelTrait;
       break;
     }
     case GrayscaleMatteType:
     {
       if (IsImageGray(image,exception) == MagickFalse)
         status=TransformImageColorspace(image,GRAYColorspace,exception);
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       break;
     }
@@ -1197,7 +1197,7 @@
           status=QuantizeImage(quantize_info,image,exception);
           quantize_info=DestroyQuantizeInfo(quantize_info);
         }
-      image->matte=MagickFalse;
+      image->alpha_trait=UndefinedPixelTrait;
       break;
     }
     case PaletteBilevelMatteType:
@@ -1207,7 +1207,7 @@
 
       if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse)
         status=TransformImageColorspace(image,sRGBColorspace,exception);
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       channel_mask=SetImageChannelMask(image,AlphaChannel);
       (void) BilevelImage(image,(double) QuantumRange/2.0,exception);
@@ -1221,7 +1221,7 @@
     {
       if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse)
         status=TransformImageColorspace(image,sRGBColorspace,exception);
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       quantize_info=AcquireQuantizeInfo(image_info);
       quantize_info->colorspace=TransparentColorspace;
@@ -1235,7 +1235,7 @@
         status=TransformImageColorspace(image,sRGBColorspace,exception);
       if (image->storage_class != DirectClass)
         status=SetImageStorageClass(image,DirectClass,exception);
-      image->matte=MagickFalse;
+      image->alpha_trait=UndefinedPixelTrait;
       break;
     }
     case TrueColorMatteType:
@@ -1244,7 +1244,7 @@
         status=TransformImageColorspace(image,sRGBColorspace,exception);
       if (image->storage_class != DirectClass)
         status=SetImageStorageClass(image,DirectClass,exception);
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       break;
     }
@@ -1258,7 +1258,7 @@
         }
       if (image->storage_class != DirectClass)
         status=SetImageStorageClass(image,DirectClass,exception);
-      image->matte=MagickFalse;
+      image->alpha_trait=UndefinedPixelTrait;
       break;
     }
     case ColorSeparationMatteType:
@@ -1271,7 +1271,7 @@
         }
       if (image->storage_class != DirectClass)
         status=SetImageStorageClass(image,DirectClass,exception);
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         status=SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       break;
     }
diff --git a/MagickCore/cache-private.h b/MagickCore/cache-private.h
index 71d6768..2fc090e 100644
--- a/MagickCore/cache-private.h
+++ b/MagickCore/cache-private.h
@@ -24,6 +24,7 @@
 
 #include <time.h>
 #include "MagickCore/cache.h"
+#include "MagickCore/pixel.h"
 #include "MagickCore/random_.h"
 #include "MagickCore/thread-private.h"
 #include "MagickCore/semaphore.h"
@@ -110,8 +111,10 @@
   ColorspaceType
     colorspace;
 
+  PixelTrait
+    alpha_trait;
+
   MagickBooleanType
-    matte,
     mask;
 
   size_t
diff --git a/MagickCore/cache.c b/MagickCore/cache.c
index ceb1e5b..0703556 100644
--- a/MagickCore/cache.c
+++ b/MagickCore/cache.c
@@ -1850,7 +1850,7 @@
   q=cache_info->channel_map;
   if ((image->storage_class != cache_info->storage_class) ||
       (image->colorspace != cache_info->colorspace) ||
-      (image->matte != cache_info->matte) ||
+      (image->alpha_trait != cache_info->alpha_trait) ||
       (image->mask != cache_info->mask) ||
       (image->columns != cache_info->columns) ||
       (image->rows != cache_info->rows) ||
@@ -3759,7 +3759,7 @@
     image->filename,(double) GetImageIndexInList(image));
   cache_info->storage_class=image->storage_class;
   cache_info->colorspace=image->colorspace;
-  cache_info->matte=image->matte;
+  cache_info->alpha_trait=image->alpha_trait;
   cache_info->mask=image->mask;
   cache_info->rows=image->rows;
   cache_info->columns=image->columns;
@@ -4912,7 +4912,7 @@
   assert(image->cache != (Cache) NULL);
   cache_info=(CacheInfo *) image->cache;
   assert(cache_info->signature == MagickSignature);
-  image->matte=MagickTrue;
+  image->alpha_trait=BlendPixelTrait;
   status=MagickTrue;
   image_view=AcquireVirtualCacheView(image,exception);  /* must be virtual */
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
@@ -4969,8 +4969,8 @@
     {
       case BackgroundVirtualPixelMethod:
       {
-        if ((image->background_color.matte != MagickFalse) &&
-            (image->matte == MagickFalse))
+        if ((image->background_color.alpha_trait == BlendPixelTrait) &&
+            (image->alpha_trait != BlendPixelTrait))
           (void) SetCacheAlphaChannel(image,OpaqueAlpha,exception);
         if ((IsPixelInfoGray(&image->background_color) == MagickFalse) &&
             (IsGrayColorspace(image->colorspace) != MagickFalse))
@@ -4979,7 +4979,7 @@
       }
       case TransparentVirtualPixelMethod:
       {
-        if (image->matte == MagickFalse)
+        if (image->alpha_trait != BlendPixelTrait)
           (void) SetCacheAlphaChannel(image,OpaqueAlpha,exception);
         break;
       }
diff --git a/MagickCore/channel.c b/MagickCore/channel.c
index 77ffb85..eb3026f 100644
--- a/MagickCore/channel.c
+++ b/MagickCore/channel.c
@@ -491,7 +491,7 @@
   if (IsGrayColorspace(image->colorspace) != MagickFalse)
     (void) SetImageColorspace(combine_image,RGBColorspace,exception);
   if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0)
-    combine_image->matte=MagickTrue;
+    combine_image->alpha_trait=BlendPixelTrait;
   /*
     Combine images.
   */
@@ -650,7 +650,7 @@
       separate_image=DestroyImage(separate_image);
       return((Image *) NULL);
     }
-  separate_image->matte=MagickFalse;
+  separate_image->alpha_trait=UndefinedPixelTrait;
   (void) SetImageColorspace(separate_image,GRAYColorspace,exception);
   /*
     Separate image.
diff --git a/MagickCore/color.c b/MagickCore/color.c
index 38e0d39..e406264 100644
--- a/MagickCore/color.c
+++ b/MagickCore/color.c
@@ -1417,7 +1417,8 @@
       ConcatentateHexColorComponent(pixel,BluePixelChannel,tuple);
       if (pixel->colorspace == CMYKColorspace)
         ConcatentateHexColorComponent(pixel,BlackPixelChannel,tuple);
-      if ((pixel->matte != MagickFalse) && (pixel->alpha != OpaqueAlpha))
+      if ((pixel->alpha_trait == BlendPixelTrait) &&
+          (pixel->alpha != OpaqueAlpha))
         ConcatentateHexColorComponent(pixel,AlphaPixelChannel,tuple);
       return;
     }
@@ -1445,7 +1446,7 @@
       if (color.colorspace-CMYKColorspace)
         status&=fabs(color.black-SVGCompliant(color.black)) < MagickEpsilon ?
           MagickTrue : MagickFalse;
-      if (color.matte != MagickFalse)
+      if (color.alpha_trait == BlendPixelTrait)
         status&=fabs(color.alpha-SVGCompliant(color.alpha)) < MagickEpsilon ?
           MagickTrue : MagickFalse;
       if (status != MagickFalse)
@@ -1453,7 +1454,7 @@
     }
   (void) ConcatenateMagickString(tuple,CommandOptionToMnemonic(
     MagickColorspaceOptions,(ssize_t) color.colorspace),MaxTextExtent);
-  if (color.matte != MagickFalse)
+  if (color.alpha_trait == BlendPixelTrait)
     (void) ConcatenateMagickString(tuple,"a",MaxTextExtent);
   (void) ConcatenateMagickString(tuple,"(",MaxTextExtent);
   if (color.colorspace == GRAYColorspace)
@@ -1471,7 +1472,7 @@
       (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
       ConcatenateColorComponent(&color,BlackPixelChannel,SVGCompliance,tuple);
     }
-  if (color.matte != MagickFalse)
+  if (color.alpha_trait == BlendPixelTrait)
     {
       (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
       ConcatenateColorComponent(&color,AlphaPixelChannel,SVGCompliance,tuple);
@@ -1569,7 +1570,7 @@
   register double
     distance;
 
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     return(MagickTrue);
   if (p->alpha == q->alpha)
     return(MagickTrue);
@@ -2258,7 +2259,7 @@
           depth=4*(n/4);
         }
       color->colorspace=sRGBColorspace;
-      color->matte=MagickFalse;
+      color->alpha_trait=UndefinedPixelTrait;
       range=GetQuantumRange(depth);
       color->red=(double) ScaleAnyToQuantum(pixel.red,range);
       color->green=(double) ScaleAnyToQuantum(pixel.green,range);
@@ -2266,7 +2267,7 @@
       color->alpha=(double) OpaqueAlpha;
       if ((n % 3) != 0)
         {
-          color->matte=MagickTrue;
+          color->alpha_trait=BlendPixelTrait;
           color->alpha=(double) ScaleAnyToQuantum(pixel.alpha,range);
         }
       color->black=0.0;
@@ -2305,11 +2306,11 @@
           icc_color=MagickTrue;
         }
       LocaleLower(colorspace);
-      color->matte=MagickFalse;
+      color->alpha_trait=UndefinedPixelTrait;
       if ((i > 0) && (colorspace[i] == 'a'))
         {
           colorspace[i]='\0';
-          color->matte=MagickTrue;
+          color->alpha_trait=BlendPixelTrait;
         }
       type=ParseCommandOption(MagickColorspaceOptions,MagickFalse,colorspace);
       if (type < 0)
@@ -2356,11 +2357,11 @@
                 color->black=(double) ClampToQuantum(scale*
                   geometry_info.psi);
               else
-                if (color->matte != MagickFalse)
+                if (color->alpha_trait == BlendPixelTrait)
                   color->alpha=(double) ClampToQuantum(QuantumRange*
                     geometry_info.psi);
             }
-          if (((flags & ChiValue) != 0) && (color->matte != MagickFalse))
+          if (((flags & ChiValue) != 0) && (color->alpha_trait == BlendPixelTrait))
             color->alpha=(double) ClampToQuantum(QuantumRange*
               geometry_info.chi);
           if (LocaleCompare(colorspace,"gray") == 0)
@@ -2368,7 +2369,7 @@
               color->colorspace=GRAYColorspace;
               color->green=color->red;
               color->blue=color->red;
-              if (((flags & SigmaValue) != 0) && (color->matte != MagickFalse))
+              if (((flags & SigmaValue) != 0) && (color->alpha_trait == BlendPixelTrait))
                 color->alpha=(double) ClampToQuantum(QuantumRange*
                   geometry_info.sigma);
             }
@@ -2433,7 +2434,7 @@
   if (p == (const ColorInfo *) NULL)
     return(MagickFalse);
   color->colorspace=sRGBColorspace;
-  color->matte=p->color.alpha != OpaqueAlpha ? MagickTrue : MagickFalse;
+  color->alpha_trait=p->color.alpha != OpaqueAlpha ? MagickTrue : MagickFalse;
   color->red=(double) p->color.red;
   color->green=(double) p->color.green;
   color->blue=(double) p->color.blue;
@@ -2502,7 +2503,7 @@
   pixel=(*color);
   if (compliance == XPMCompliance)
     {
-      pixel.matte=MagickFalse;
+      pixel.alpha_trait=UndefinedPixelTrait;
       pixel.depth=(size_t) MagickMin(1.0*image->depth,16.0);
     }
   GetColorTuple(&pixel,compliance != SVGCompliance ? MagickTrue : MagickFalse,
@@ -2511,7 +2512,7 @@
     return(MagickFalse);
   (void) GetColorInfo("*",exception);
   ResetLinkedListIterator(color_list);
-  opacity=image->matte != MagickFalse ? color->alpha : OpaqueAlpha;
+  opacity=image->alpha_trait == BlendPixelTrait ? color->alpha : OpaqueAlpha;
   p=(const ColorInfo *) GetNextValueInLinkedList(color_list);
   while (p != (const ColorInfo *) NULL)
   {
diff --git a/MagickCore/colormap.c b/MagickCore/colormap.c
index 9ae4820..2e5f2f0 100644
--- a/MagickCore/colormap.c
+++ b/MagickCore/colormap.c
@@ -144,7 +144,7 @@
 
     pixel=(double) (i*(QuantumRange/MagickMax(colors-1,1)));
     GetPixelInfo(image,image->colormap+i);
-    image->colormap[i].matte=MagickTrue;
+    image->colormap[i].alpha_trait=BlendPixelTrait;
     image->colormap[i].red=pixel;
     image->colormap[i].green=pixel;
     image->colormap[i].blue=pixel;
diff --git a/MagickCore/colorspace.c b/MagickCore/colorspace.c
index 2722fc4..049c6ea 100644
--- a/MagickCore/colorspace.c
+++ b/MagickCore/colorspace.c
@@ -285,7 +285,7 @@
           status=MagickFalse;
       }
       image_view=DestroyCacheView(image_view);
-      image->type=image->matte == MagickFalse ? ColorSeparationType :
+      image->type=image->alpha_trait != BlendPixelTrait ? ColorSeparationType :
         ColorSeparationMatteType;
       if (SetImageColorspace(image,colorspace,exception) == MagickFalse)
         return(MagickFalse);
@@ -353,7 +353,7 @@
           status=MagickFalse;
       }
       image_view=DestroyCacheView(image_view);
-      image->type=image->matte == MagickFalse ? ColorSeparationType :
+      image->type=image->alpha_trait != BlendPixelTrait ? ColorSeparationType :
         ColorSeparationMatteType;
       if (SetImageColorspace(image,colorspace,exception) == MagickFalse)
         return(MagickFalse);
diff --git a/MagickCore/composite.c b/MagickCore/composite.c
index 68734f7..788bae8 100644
--- a/MagickCore/composite.c
+++ b/MagickCore/composite.c
@@ -721,7 +721,7 @@
         Modify destination outside the overlaid region and require an alpha
         channel to exist, to add transparency.
       */
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       break;
     }
@@ -1614,7 +1614,7 @@
               case CopyAlphaCompositeOp:
               {
                 pixel=QuantumRange*Sa;
-                if (composite_image->matte == MagickFalse)
+                if (composite_image->alpha_trait != BlendPixelTrait)
                   pixel=GetPixelIntensity(composite_image,p);
                 break;
               }
@@ -2401,8 +2401,8 @@
     exception);
   status=MagickTrue;
   if ((image->compose != CopyCompositeOp) &&
-      ((image->compose != OverCompositeOp) || (image->matte != MagickFalse) ||
-       (texture_image->matte != MagickFalse)))
+      ((image->compose != OverCompositeOp) || (image->alpha_trait == BlendPixelTrait) ||
+       (texture_image->alpha_trait == BlendPixelTrait)))
     {
       /*
         Tile texture onto the image background.
diff --git a/MagickCore/decorate.c b/MagickCore/decorate.c
index 7f915ea..48d9286 100644
--- a/MagickCore/decorate.c
+++ b/MagickCore/decorate.c
@@ -233,8 +233,8 @@
   if ((IsPixelInfoGray(&frame_image->matte_color) == MagickFalse) &&
       (IsGrayColorspace(frame_image->colorspace) != MagickFalse))
     (void) SetImageColorspace(frame_image,RGBColorspace,exception);
-  if ((frame_image->matte_color.matte != MagickFalse) &&
-      (frame_image->matte == MagickFalse))
+  if ((frame_image->matte_color.alpha_trait == BlendPixelTrait) &&
+      (frame_image->alpha_trait != BlendPixelTrait))
     (void) SetImageAlpha(frame_image,OpaqueAlpha,exception);
   frame_image->page=image->page;
   if ((image->page.width != 0) && (image->page.height != 0))
@@ -429,7 +429,7 @@
       Set frame interior to interior color.
     */
     if ((compose != CopyCompositeOp) && ((compose != OverCompositeOp) ||
-        (image->matte != MagickFalse)))
+        (image->alpha_trait == BlendPixelTrait)))
       for (x=0; x < (ssize_t) image->columns; x++)
       {
         SetPixelInfoPixel(frame_image,&interior,q);
@@ -592,7 +592,7 @@
   frame_view=DestroyCacheView(frame_view);
   image_view=DestroyCacheView(image_view);
   if ((compose != CopyCompositeOp) && ((compose != OverCompositeOp) ||
-      (image->matte != MagickFalse)))
+      (image->alpha_trait == BlendPixelTrait)))
     {
       x=(ssize_t) (frame_info->outer_bevel+(frame_info->x-bevel_width)+
         frame_info->inner_bevel);
diff --git a/MagickCore/display.c b/MagickCore/display.c
index a296d75..2d6e537 100644
--- a/MagickCore/display.c
+++ b/MagickCore/display.c
@@ -4335,7 +4335,7 @@
         ((ssize_t) ScaleQuantumToChar(QuantumRange)*blend)/100);
       if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
         return(MagickFalse);
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
       image_view=AcquireAuthenticCacheView(image,exception);
       for (y=0; y < (int) image->rows; y++)
       {
@@ -5356,7 +5356,7 @@
   */
   if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
-  image->matte=MagickTrue;
+  image->alpha_trait=BlendPixelTrait;
   image_view=AcquireAuthenticCacheView(image,exception);
   for (y=0; y < (int) crop_info.height; y++)
   {
@@ -8003,7 +8003,7 @@
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      (void) SetImageType(*image,(*image)->matte == MagickFalse ?
+      (void) SetImageType(*image,(*image)->alpha_trait != BlendPixelTrait ?
         GrayscaleType : GrayscaleMatteType,exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
@@ -9160,7 +9160,7 @@
       Image
         *matte_image;
 
-      if ((*image)->matte == MagickFalse)
+      if ((*image)->alpha_trait != BlendPixelTrait)
         {
           XNoticeWidget(display,windows,
             "Image does not have any matte information",(*image)->filename);
@@ -10093,7 +10093,7 @@
           continue;
         if (SetImageStorageClass(*image,DirectClass,exception) == MagickFalse)
           return(MagickFalse);
-        if ((*image)->matte == MagickFalse)
+        if ((*image)->alpha_trait != BlendPixelTrait)
           (void) SetImageAlphaChannel(*image,OpaqueAlphaChannel,exception);
         image_view=AcquireAuthenticCacheView(*image,exception);
         switch (method)
@@ -10202,7 +10202,7 @@
                 break;
             }
             if (StringToLong(matte) == (long) OpaqueAlpha)
-              (*image)->matte=MagickFalse;
+              (*image)->alpha_trait=UndefinedPixelTrait;
             break;
           }
         }
diff --git a/MagickCore/distort.c b/MagickCore/distort.c
index fd81081..16a2b47 100644
--- a/MagickCore/distort.c
+++ b/MagickCore/distort.c
@@ -1503,7 +1503,7 @@
   (void) SetImageVirtualPixelMethod(tmp_image,TransparentVirtualPixelMethod,
     exception);
 
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     {
       /*
         Image has not transparency channel, so we free to use it
@@ -2283,8 +2283,8 @@
   if ((IsPixelInfoGray(&distort_image->background_color) == MagickFalse) &&
       (IsGrayColorspace(distort_image->colorspace) != MagickFalse))
     (void) TransformImageColorspace(distort_image,RGBColorspace,exception);
-  if (distort_image->background_color.matte != MagickFalse)
-    distort_image->matte=MagickTrue;
+  if (distort_image->background_color.alpha_trait == BlendPixelTrait)
+    distort_image->alpha_trait=BlendPixelTrait;
   distort_image->page.x=geometry.x;
   distort_image->page.y=geometry.y;
 
@@ -2919,7 +2919,7 @@
       (image->colorspace == CMYKColorspace))
     number_colors++;
   if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-      (image->matte != MagickFalse))
+      (image->alpha_trait == BlendPixelTrait))
     number_colors++;
 
   /*
@@ -2969,7 +2969,7 @@
           (void) FormatLocaleFile(stderr, "  -channel K -fx '%+lf*i %+lf*j %+lf' \\\n",
               coeff[x], coeff[x+1], coeff[x+2]),x+=3;
         if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-            (image->matte != MagickFalse))
+            (image->alpha_trait == BlendPixelTrait))
           (void) FormatLocaleFile(stderr, "  -channel A -fx '%+lf*i %+lf*j %+lf' \\\n",
               coeff[x], coeff[x+1], coeff[x+2]),x+=3;
         break;
@@ -2996,7 +2996,7 @@
               coeff[ x ], coeff[x+1],
               coeff[x+2], coeff[x+3]),x+=4;
         if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-            (image->matte != MagickFalse))
+            (image->alpha_trait == BlendPixelTrait))
           (void) FormatLocaleFile(stderr, "   -channel A -fx '%+lf*i %+lf*j %+lf*i*j %+lf;\n",
               coeff[ x ], coeff[x+1],
               coeff[x+2], coeff[x+3]),x+=4;
@@ -3086,7 +3086,7 @@
               pixel.black   = coeff[x]*i +coeff[x+1]*j
                               +coeff[x+2], x+=3;
             if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-                (image->matte != MagickFalse))
+                (image->alpha_trait == BlendPixelTrait))
               pixel.alpha = coeff[x]*i +coeff[x+1]*j
                               +coeff[x+2], x+=3;
             break;
@@ -3108,7 +3108,7 @@
               pixel.black   = coeff[x]*i     + coeff[x+1]*j +
                               coeff[x+2]*i*j + coeff[x+3], x+=4;
             if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-                (image->matte != MagickFalse))
+                (image->alpha_trait == BlendPixelTrait))
               pixel.alpha = coeff[x]*i     + coeff[x+1]*j +
                               coeff[x+2]*i*j + coeff[x+3], x+=4;
             break;
@@ -3131,7 +3131,7 @@
                 (image->colorspace == CMYKColorspace))
               pixel.black=0.0;
             if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-                (image->matte != MagickFalse))
+                (image->alpha_trait == BlendPixelTrait))
               pixel.alpha=0.0;
             denominator = 0.0;
             for(k=0; k<number_arguments; k+=2+number_colors) {
@@ -3152,7 +3152,7 @@
                   (image->colorspace == CMYKColorspace))
                 pixel.black   += arguments[x++]*weight;
               if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-                  (image->matte != MagickFalse))
+                  (image->alpha_trait == BlendPixelTrait))
                 pixel.alpha += arguments[x++]*weight;
               denominator += weight;
             }
@@ -3166,7 +3166,7 @@
                 (image->colorspace == CMYKColorspace))
               pixel.black/=denominator;
             if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-                (image->matte != MagickFalse))
+                (image->alpha_trait == BlendPixelTrait))
               pixel.alpha/=denominator;
             break;
           }
@@ -3194,7 +3194,7 @@
                     (image->colorspace == CMYKColorspace))
                   pixel.black=arguments[x++];
                 if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-                    (image->matte != MagickFalse))
+                    (image->alpha_trait == BlendPixelTrait))
                   pixel.alpha=arguments[x++];
                 minimum = distance;
               }
@@ -3213,7 +3213,7 @@
             (image->colorspace == CMYKColorspace))
           pixel.black*=QuantumRange;
         if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-            (image->matte != MagickFalse))
+            (image->alpha_trait == BlendPixelTrait))
           pixel.alpha*=QuantumRange;
         SetPixelInfoPixel(sparse_image,&pixel,q);
         q+=GetPixelChannels(sparse_image);
diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index 21202ed..f7e341b 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -3931,7 +3931,7 @@
   /*
     Draw polygon or line.
   */
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
   start=(ssize_t) ceil(bounds.y1-0.5);
   stop=(ssize_t) floor(bounds.y2+0.5);
@@ -4311,7 +4311,7 @@
     }
     case MattePrimitive:
     {
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       switch (primitive_info->method)
       {
@@ -4506,7 +4506,7 @@
           (void) TransformImage(&composite_image,(char *) NULL,geometry,
             exception);
         }
-      if (composite_image->matte == MagickFalse)
+      if (composite_image->alpha_trait != BlendPixelTrait)
         (void) SetImageAlphaChannel(composite_image,OpaqueAlphaChannel,
           exception);
       if (draw_info->alpha != OpaqueAlpha)
diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c
index cfecc95..28aa52f 100644
--- a/MagickCore/enhance.c
+++ b/MagickCore/enhance.c
@@ -418,7 +418,7 @@
   }
   image_view=DestroyCacheView(image_view);
   clut_map=(PixelInfo *) RelinquishMagickMemory(clut_map);
-  if ((clut_image->matte != MagickFalse) &&
+  if ((clut_image->alpha_trait == BlendPixelTrait) &&
       ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0))
     (void) SetImageAlphaChannel(image,ActivateAlphaChannel,exception);
   return(status);
@@ -2010,7 +2010,7 @@
     return(MagickFalse);
   if (IsGrayColorspace(image->colorspace) != MagickFalse)
     (void) TransformImageColorspace(image,RGBColorspace,exception);
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
   /*
     Hald clut image.
@@ -2097,7 +2097,7 @@
           (image->colorspace == CMYKColorspace))
         SetPixelBlack(image,ClampToQuantum(pixel.black),q);
       if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-          (image->matte != MagickFalse))
+          (image->alpha_trait == BlendPixelTrait))
         SetPixelAlpha(image,ClampToQuantum(pixel.alpha),q);
       q+=GetPixelChannels(image);
     }
@@ -2553,7 +2553,7 @@
           (void) SetImageChannelMask(image,channel_mask);
         }
       if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-          (image->matte == MagickTrue))
+          (image->alpha_trait == BlendPixelTrait))
         {
           channel_mask=SetImageChannelMask(image,AlphaChannel);
           status|=LevelImage(image,black_color->alpha,white_color->alpha,1.0,
@@ -2593,7 +2593,7 @@
           (void) SetImageChannelMask(image,channel_mask);
         }
       if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-          (image->matte == MagickTrue))
+          (image->alpha_trait == BlendPixelTrait))
         {
           channel_mask=SetImageChannelMask(image,AlphaChannel);
           status|=LevelizeImage(image,black_color->alpha,white_color->alpha,1.0,
diff --git a/MagickCore/feature.c b/MagickCore/feature.c
index 73af219..0a4d096 100644
--- a/MagickCore/feature.c
+++ b/MagickCore/feature.c
@@ -253,7 +253,7 @@
       if (image->colorspace == CMYKColorspace)
         grays[ScaleQuantumToMap(GetPixelBlack(image,p))].black=
           ScaleQuantumToMap(GetPixelBlack(image,p));
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         grays[ScaleQuantumToMap(GetPixelAlpha(image,p))].alpha=
           ScaleQuantumToMap(GetPixelAlpha(image,p));
       p+=GetPixelChannels(image);
@@ -279,7 +279,7 @@
     if (image->colorspace == CMYKColorspace)
       if (grays[i].black != ~0U)
         grays[gray.black++].black=grays[i].black;
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       if (grays[i].alpha != ~0U)
         grays[gray.alpha++].alpha=grays[i].alpha;
   }
@@ -294,7 +294,7 @@
   if (image->colorspace == CMYKColorspace)
     if (gray.black > number_grays)
       number_grays=gray.black;
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     if (gray.alpha > number_grays)
       number_grays=gray.alpha;
   cooccurrence=(ChannelStatistics **) AcquireQuantumMemory(number_grays,
@@ -496,7 +496,7 @@
             cooccurrence[u][v].direction[i].black++;
             cooccurrence[v][u].direction[i].black++;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             u=0;
             v=0;
@@ -585,7 +585,7 @@
         cooccurrence[x][y].direction[i].blue*=normalize;
         if (image->colorspace == CMYKColorspace)
           cooccurrence[x][y].direction[i].black*=normalize;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           cooccurrence[x][y].direction[i].alpha*=normalize;
       }
     }
@@ -625,7 +625,7 @@
           channel_features[BlackPixelChannel].angular_second_moment[i]+=
             cooccurrence[x][y].direction[i].black*
             cooccurrence[x][y].direction[i].black;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           channel_features[AlphaPixelChannel].angular_second_moment[i]+=
             cooccurrence[x][y].direction[i].alpha*
             cooccurrence[x][y].direction[i].alpha;
@@ -637,7 +637,7 @@
         sum[y].direction[i].blue+=cooccurrence[x][y].direction[i].blue;
         if (image->colorspace == CMYKColorspace)
           sum[y].direction[i].black+=cooccurrence[x][y].direction[i].black;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           sum[y].direction[i].alpha+=cooccurrence[x][y].direction[i].alpha;
         correlation.direction[i].red+=x*y*cooccurrence[x][y].direction[i].red;
         correlation.direction[i].green+=x*y*
@@ -647,7 +647,7 @@
         if (image->colorspace == CMYKColorspace)
           correlation.direction[i].black+=x*y*
             cooccurrence[x][y].direction[i].black;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           correlation.direction[i].alpha+=x*y*
             cooccurrence[x][y].direction[i].alpha;
         /*
@@ -662,7 +662,7 @@
         if (image->colorspace == CMYKColorspace)
           channel_features[BlackPixelChannel].inverse_difference_moment[i]+=
             cooccurrence[x][y].direction[i].black/((y-x)*(y-x)+1);
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           channel_features[AlphaPixelChannel].inverse_difference_moment[i]+=
             cooccurrence[x][y].direction[i].alpha/((y-x)*(y-x)+1);
         /*
@@ -677,7 +677,7 @@
         if (image->colorspace == CMYKColorspace)
           density_xy[y+x+2].direction[i].black+=
             cooccurrence[x][y].direction[i].black;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           density_xy[y+x+2].direction[i].alpha+=
             cooccurrence[x][y].direction[i].alpha;
         /*
@@ -696,7 +696,7 @@
           channel_features[BlackPixelChannel].entropy[i]-=
             cooccurrence[x][y].direction[i].black*
             log10(cooccurrence[x][y].direction[i].black+MagickEpsilon);
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           channel_features[AlphaPixelChannel].entropy[i]-=
             cooccurrence[x][y].direction[i].alpha*
             log10(cooccurrence[x][y].direction[i].alpha+MagickEpsilon);
@@ -706,7 +706,7 @@
         density_x[x].direction[i].red+=cooccurrence[x][y].direction[i].red;
         density_x[x].direction[i].green+=cooccurrence[x][y].direction[i].green;
         density_x[x].direction[i].blue+=cooccurrence[x][y].direction[i].blue;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           density_x[x].direction[i].alpha+=
             cooccurrence[x][y].direction[i].alpha;
         if (image->colorspace == CMYKColorspace)
@@ -718,7 +718,7 @@
         if (image->colorspace == CMYKColorspace)
           density_y[y].direction[i].black+=
             cooccurrence[x][y].direction[i].black;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           density_y[y].direction[i].alpha+=
             cooccurrence[x][y].direction[i].alpha;
       }
@@ -733,7 +733,7 @@
           mean.direction[i].black+=y*sum[y].direction[i].black;
           sum_squares.direction[i].black+=y*y*sum[y].direction[i].black;
         }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           mean.direction[i].alpha+=y*sum[y].direction[i].alpha;
           sum_squares.direction[i].alpha+=y*y*sum[y].direction[i].alpha;
@@ -767,7 +767,7 @@
         (mean.direction[i].black*mean.direction[i].black))*sqrt(
         sum_squares.direction[i].black-(mean.direction[i].black*
         mean.direction[i].black)));
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       channel_features[AlphaPixelChannel].correlation[i]=
         (correlation.direction[i].alpha-mean.direction[i].alpha*
         mean.direction[i].alpha)/(sqrt(sum_squares.direction[i].alpha-
@@ -801,7 +801,7 @@
       if (image->colorspace == CMYKColorspace)
         channel_features[BlackPixelChannel].sum_average[i]+=
           x*density_xy[x].direction[i].black;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         channel_features[AlphaPixelChannel].sum_average[i]+=
           x*density_xy[x].direction[i].alpha;
       /*
@@ -820,7 +820,7 @@
         channel_features[BlackPixelChannel].sum_entropy[i]-=
           density_xy[x].direction[i].black*
           log10(density_xy[x].direction[i].black+MagickEpsilon);
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         channel_features[AlphaPixelChannel].sum_entropy[i]-=
           density_xy[x].direction[i].alpha*
           log10(density_xy[x].direction[i].alpha+MagickEpsilon);
@@ -844,7 +844,7 @@
           (x-channel_features[BlackPixelChannel].sum_entropy[i])*
           (x-channel_features[BlackPixelChannel].sum_entropy[i])*
           density_xy[x].direction[i].black;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         channel_features[AlphaPixelChannel].sum_variance[i]+=
           (x-channel_features[AlphaPixelChannel].sum_entropy[i])*
           (x-channel_features[AlphaPixelChannel].sum_entropy[i])*
@@ -882,7 +882,7 @@
         if (image->colorspace == CMYKColorspace)
           variance.direction[i].black+=(y-mean.direction[i].black+1)*
             (y-mean.direction[i].black+1)*cooccurrence[x][y].direction[i].black;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           variance.direction[i].alpha+=(y-mean.direction[i].alpha+1)*
             (y-mean.direction[i].alpha+1)*
             cooccurrence[x][y].direction[i].alpha;
@@ -898,7 +898,7 @@
         if (image->colorspace == CMYKColorspace)
           density_xy[MagickAbsoluteValue(y-x)].direction[i].black+=
             cooccurrence[x][y].direction[i].black;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           density_xy[MagickAbsoluteValue(y-x)].direction[i].alpha+=
             cooccurrence[x][y].direction[i].alpha;
         /*
@@ -913,7 +913,7 @@
         if (image->colorspace == CMYKColorspace)
           entropy_xy.direction[i].black-=cooccurrence[x][y].direction[i].black*
             log10(cooccurrence[x][y].direction[i].black+MagickEpsilon);
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           entropy_xy.direction[i].alpha-=
             cooccurrence[x][y].direction[i].alpha*log10(
             cooccurrence[x][y].direction[i].alpha+MagickEpsilon);
@@ -931,7 +931,7 @@
             cooccurrence[x][y].direction[i].black*log10(
             density_x[x].direction[i].black*density_y[y].direction[i].black+
             MagickEpsilon));
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           entropy_xy1.direction[i].alpha-=(
             cooccurrence[x][y].direction[i].alpha*log10(
             density_x[x].direction[i].alpha*density_y[y].direction[i].alpha+
@@ -950,7 +950,7 @@
             density_y[y].direction[i].black*log10(
             density_x[x].direction[i].black*density_y[y].direction[i].black+
             MagickEpsilon));
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           entropy_xy2.direction[i].alpha-=(density_x[x].direction[i].alpha*
             density_y[y].direction[i].alpha*log10(
             density_x[x].direction[i].alpha*density_y[y].direction[i].alpha+
@@ -966,7 +966,7 @@
     if (image->colorspace == CMYKColorspace)
       channel_features[BlackPixelChannel].variance_sum_of_squares[i]=
         variance.direction[i].black;
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       channel_features[AlphaPixelChannel].variance_sum_of_squares[i]=
         variance.direction[i].alpha;
   }
@@ -994,7 +994,7 @@
       variance.direction[i].blue+=density_xy[x].direction[i].blue;
       if (image->colorspace == CMYKColorspace)
         variance.direction[i].black+=density_xy[x].direction[i].black;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         variance.direction[i].alpha+=density_xy[x].direction[i].alpha;
       sum_squares.direction[i].red+=density_xy[x].direction[i].red*
         density_xy[x].direction[i].red;
@@ -1005,7 +1005,7 @@
       if (image->colorspace == CMYKColorspace)
         sum_squares.direction[i].black+=density_xy[x].direction[i].black*
           density_xy[x].direction[i].black;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         sum_squares.direction[i].alpha+=density_xy[x].direction[i].alpha*
           density_xy[x].direction[i].alpha;
       /*
@@ -1024,7 +1024,7 @@
         channel_features[BlackPixelChannel].difference_entropy[i]-=
           density_xy[x].direction[i].black*
           log10(density_xy[x].direction[i].black+MagickEpsilon);
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         channel_features[AlphaPixelChannel].difference_entropy[i]-=
           density_xy[x].direction[i].alpha*
           log10(density_xy[x].direction[i].alpha+MagickEpsilon);
@@ -1040,7 +1040,7 @@
       if (image->colorspace == CMYKColorspace)
         entropy_x.direction[i].black-=(density_x[x].direction[i].black*
           log10(density_x[x].direction[i].black+MagickEpsilon));
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         entropy_x.direction[i].alpha-=(density_x[x].direction[i].alpha*
           log10(density_x[x].direction[i].alpha+MagickEpsilon));
       entropy_y.direction[i].red-=(density_y[x].direction[i].red*
@@ -1052,7 +1052,7 @@
       if (image->colorspace == CMYKColorspace)
         entropy_y.direction[i].black-=(density_y[x].direction[i].black*
           log10(density_y[x].direction[i].black+MagickEpsilon));
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         entropy_y.direction[i].alpha-=(density_y[x].direction[i].alpha*
           log10(density_y[x].direction[i].alpha+MagickEpsilon));
     }
@@ -1076,7 +1076,7 @@
         (((double) number_grays*number_grays*sum_squares.direction[i].black)-
         (variance.direction[i].black*variance.direction[i].black))/
         ((double) number_grays*number_grays*number_grays*number_grays);
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       channel_features[AlphaPixelChannel].difference_variance[i]=
         (((double) number_grays*number_grays*sum_squares.direction[i].alpha)-
         (variance.direction[i].alpha*variance.direction[i].alpha))/
@@ -1101,7 +1101,7 @@
         (entropy_xy.direction[i].black-entropy_xy1.direction[i].black)/
         (entropy_x.direction[i].black > entropy_y.direction[i].black ?
          entropy_x.direction[i].black : entropy_y.direction[i].black);
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       channel_features[AlphaPixelChannel].measure_of_correlation_1[i]=
         (entropy_xy.direction[i].alpha-entropy_xy1.direction[i].alpha)/
         (entropy_x.direction[i].alpha > entropy_y.direction[i].alpha ?
@@ -1119,7 +1119,7 @@
       channel_features[BlackPixelChannel].measure_of_correlation_2[i]=
         (sqrt(fabs(1.0-exp(-2.0*(entropy_xy2.direction[i].black-
         entropy_xy.direction[i].black)))));
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       channel_features[AlphaPixelChannel].measure_of_correlation_2[i]=
         (sqrt(fabs(1.0-exp(-2.0*(entropy_xy2.direction[i].alpha-
         entropy_xy.direction[i].alpha)))));
@@ -1162,7 +1162,7 @@
               pixel.direction[i].blue+=cooccurrence[x][y].direction[i].blue;
               if (image->colorspace == CMYKColorspace)
                 pixel.direction[i].black+=cooccurrence[x][y].direction[i].black;
-              if (image->matte != MagickFalse)
+              if (image->alpha_trait == BlendPixelTrait)
                 pixel.direction[i].alpha+=
                   cooccurrence[x][y].direction[i].alpha;
             }
@@ -1182,7 +1182,7 @@
             Q[z][y].direction[i].black+=cooccurrence[z][x].direction[i].black*
               cooccurrence[y][x].direction[i].black/
               density_x[z].direction[i].black/density_y[x].direction[i].black;
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             Q[z][y].direction[i].alpha+=
               cooccurrence[z][x].direction[i].alpha*
               cooccurrence[y][x].direction[i].alpha/
@@ -1199,7 +1199,7 @@
       if (image->colorspace == CMYKColorspace)
         channel_features[BlackPixelChannel].contrast[i]+=z*z*
           pixel.direction[i].black;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         channel_features[AlphaPixelChannel].contrast[i]+=z*z*
           pixel.direction[i].alpha;
     }
@@ -1216,7 +1216,7 @@
     if (image->colorspace == CMYKColorspace)
       channel_features[BlackPixelChannel].maximum_correlation_coefficient[i]=
         sqrt((double) -1.0);
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       channel_features[AlphaPixelChannel].maximum_correlation_coefficient[i]=
         sqrt((double) -1.0);
   }
diff --git a/MagickCore/fourier.c b/MagickCore/fourier.c
index 0690663..80d2353 100644
--- a/MagickCore/fourier.c
+++ b/MagickCore/fourier.c
@@ -727,7 +727,7 @@
                   thread_status;
 
                 thread_status=MagickTrue;
-                if (image->matte != MagickFalse)
+                if (image->alpha_trait == BlendPixelTrait)
                   thread_status=ForwardFourierTransformChannel(image,
                     AlphaPixelChannel,modulus,fourier_image,exception);
                 if (thread_status == MagickFalse)
@@ -1289,7 +1289,7 @@
               thread_status;
 
             thread_status=MagickTrue;
-            if (magnitude_image->matte != MagickFalse)
+            if (magnitude_image->alpha_trait == BlendPixelTrait)
               thread_status=InverseFourierTransformChannel(magnitude_image,
                 phase_image,AlphaPixelChannel,modulus,fourier_image,exception);
             if (thread_status == MagickFalse)
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index 2bd8a18..80bfabc 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -707,8 +707,8 @@
   if ((IsGrayColorspace(image->colorspace) != MagickFalse) &&
       (IsPixelInfoGray(colorize) != MagickFalse))
     (void) SetImageColorspace(colorize_image,RGBColorspace,exception);
-  if ((colorize_image->matte == MagickFalse) &&
-      (colorize->matte != MagickFalse))
+  if ((colorize_image->alpha_trait != BlendPixelTrait) &&
+      (colorize->alpha_trait == BlendPixelTrait))
     (void) SetImageAlpha(colorize_image,OpaqueAlpha,exception);
   if (blend == (const char *) NULL)
     return(colorize_image);
@@ -1005,7 +1005,7 @@
           GetPixelGreen(image,p)+ColorMatrix[v][2]*GetPixelBlue(image,p);
         if (image->colorspace == CMYKColorspace)
           sum+=ColorMatrix[v][3]*GetPixelBlack(image,p);
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           sum+=ColorMatrix[v][4]*GetPixelAlpha(image,p);
         sum+=QuantumRange*ColorMatrix[v][5];
         switch (v)
@@ -1505,7 +1505,7 @@
           double
             alpha;
 
-          if (pixel.matte == MagickFalse)
+          if (pixel.alpha_trait != BlendPixelTrait)
             return(1.0);
           alpha=(double) (QuantumScale*pixel.alpha);
           return(alpha);
@@ -3238,7 +3238,7 @@
       return((Image *) NULL);
     }
   if (implode_image->background_color.alpha != OpaqueAlpha)
-    implode_image->matte=MagickTrue;
+    implode_image->alpha_trait=BlendPixelTrait;
   /*
     Compute scaling factor.
   */
@@ -4310,12 +4310,12 @@
   border_info.y=0;
   (void) QueryColorCompliance("none",AllCompliance,&clone_image->border_color,
     exception);
-  clone_image->matte=MagickTrue;
+  clone_image->alpha_trait=BlendPixelTrait;
   border_image=BorderImage(clone_image,&border_info,OverCompositeOp,exception);
   clone_image=DestroyImage(clone_image);
   if (border_image == (Image *) NULL)
     return((Image *) NULL);
-  if (border_image->matte == MagickFalse)
+  if (border_image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(border_image,OpaqueAlphaChannel,exception);
   /*
     Shadow image.
@@ -4343,10 +4343,10 @@
         continue;
       }
     background_color=border_image->background_color;
-    background_color.matte=MagickTrue;
+    background_color.alpha_trait=BlendPixelTrait;
     for (x=0; x < (ssize_t) border_image->columns; x++)
     {
-      if (border_image->matte != MagickFalse)
+      if (border_image->alpha_trait == BlendPixelTrait)
         background_color.alpha=GetPixelAlpha(border_image,q)*alpha/100.0;
       SetPixelInfoPixel(border_image,&background_color,q);
       q+=GetPixelChannels(border_image);
@@ -5087,7 +5087,7 @@
       return((Image *) NULL);
     }
   if (swirl_image->background_color.alpha != OpaqueAlpha)
-    swirl_image->matte=MagickTrue;
+    swirl_image->alpha_trait=BlendPixelTrait;
   /*
     Compute scaling factor.
   */
@@ -5504,7 +5504,7 @@
       canvas_image=DestroyImage(canvas_image);
       return((Image *) NULL);
     }
-  canvas_image->matte=MagickTrue;
+  canvas_image->alpha_trait=BlendPixelTrait;
   oval_image=CloneImage(canvas_image,canvas_image->columns,canvas_image->rows,
     MagickTrue,exception);
   if (oval_image == (Image *) NULL)
@@ -5533,7 +5533,7 @@
       canvas_image=DestroyImage(canvas_image);
       return((Image *) NULL);
     }
-  blur_image->matte=MagickFalse;
+  blur_image->alpha_trait=UndefinedPixelTrait;
   (void) CompositeImage(canvas_image,blur_image,IntensityCompositeOp,MagickTrue,
     0,0,exception);
   blur_image=DestroyImage(blur_image);
@@ -5624,7 +5624,7 @@
       return((Image *) NULL);
     }
   if (wave_image->background_color.alpha != OpaqueAlpha)
-    wave_image->matte=MagickTrue;
+    wave_image->alpha_trait=BlendPixelTrait;
   /*
     Allocate sine map.
   */
diff --git a/MagickCore/histogram.c b/MagickCore/histogram.c
index c92d898..0505adb 100644
--- a/MagickCore/histogram.c
+++ b/MagickCore/histogram.c
@@ -166,7 +166,7 @@
     ((ScaleQuantumToChar(ClampToQuantum(pixel->red)) >> index) & 0x01) |
     ((ScaleQuantumToChar(ClampToQuantum(pixel->green)) >> index) & 0x01) << 1 |
     ((ScaleQuantumToChar(ClampToQuantum(pixel->blue)) >> index) & 0x01) << 2);
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     id|=((ScaleQuantumToChar(ClampToQuantum(pixel->alpha)) >> index) &
       0x01) << 3;
   return(id);
@@ -342,7 +342,7 @@
   /*
     Traverse any children.
   */
-  number_children=image->matte == MagickFalse ? 8UL : 16UL;
+  number_children=image->alpha_trait != BlendPixelTrait ? 8UL : 16UL;
   for (i=0; i < (ssize_t) number_children; i++)
     if (node_info->child[i] != (NodeInfo *) NULL)
       DefineImageHistogram(image,node_info->child[i],histogram);
@@ -441,7 +441,7 @@
   /*
     Traverse any children.
   */
-  number_children=image->matte == MagickFalse ? 8UL : 16UL;
+  number_children=image->alpha_trait != BlendPixelTrait ? 8UL : 16UL;
   for (i=0; i < (ssize_t) number_children; i++)
     if (node_info->child[i] != (NodeInfo *) NULL)
       DestroyColorCube(image,node_info->child[i]);
@@ -1148,7 +1148,7 @@
         ConcatenateColorComponent(&pixel,BlackPixelChannel,X11Compliance,
           tuple);
       }
-    if (pixel.matte != MagickFalse)
+    if (pixel.alpha_trait == BlendPixelTrait)
       {
         (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
         ConcatenateColorComponent(&pixel,AlphaPixelChannel,X11Compliance,
@@ -1221,7 +1221,7 @@
   /*
     Traverse any children.
   */
-  number_children=unique_image->matte == MagickFalse ? 8UL : 16UL;
+  number_children=unique_image->alpha_trait != BlendPixelTrait ? 8UL : 16UL;
   for (i=0; i < (ssize_t) number_children; i++)
     if (node_info->child[i] != (NodeInfo *) NULL)
       UniqueColorsToImage(unique_image,unique_view,cube_info,
diff --git a/MagickCore/identify.c b/MagickCore/identify.c
index 3c37f73..a1b609d 100644
--- a/MagickCore/identify.c
+++ b/MagickCore/identify.c
@@ -476,7 +476,7 @@
           break;
         }
       }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         (void) FormatLocaleFile(file,"    alpha: %.20g-bit\n",(double)
           channel_statistics[AlphaPixelChannel].depth);
       scale=1;
@@ -519,7 +519,7 @@
           break;
         }
       }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         (void) PrintChannelStatistics(file,AlphaPixelChannel,"Alpha",1.0/
           scale,channel_statistics);
       if (colorspace != GRAYColorspace)
@@ -567,7 +567,7 @@
           break;
         }
       }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         (void) PrintChannelFeatures(file,AlphaPixelChannel,"Alpha",
           channel_features);
       channel_features=(ChannelFeatures *) RelinquishMagickMemory(
@@ -579,7 +579,7 @@
         (void) FormatLocaleFile(file,"  Total ink density: %.0f%%\n",100.0*
           GetImageTotalInkDensity(image,exception)/(double) QuantumRange);
       x=0;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           register const Quantum
             *p;
@@ -667,7 +667,7 @@
                 ConcatenateColorComponent(&pixel,BlackPixelChannel,
                   X11Compliance,tuple);
               }
-            if (pixel.matte != MagickFalse)
+            if (pixel.alpha_trait == BlendPixelTrait)
               {
                 (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
                 ConcatenateColorComponent(&pixel,AlphaPixelChannel,
diff --git a/MagickCore/image.c b/MagickCore/image.c
index b1545c1..d58a771 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -473,14 +473,14 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename);
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
-  matte=images->matte;
+  matte=images->alpha_trait;
   number_images=1;
   width=images->columns;
   height=images->rows;
   next=GetNextImageInList(images);
   for ( ; next != (Image *) NULL; next=GetNextImageInList(next))
   {
-    if (next->matte != MagickFalse)
+    if (next->alpha_trait == BlendPixelTrait)
       matte=MagickTrue;
     number_images++;
     if (stack != MagickFalse)
@@ -505,7 +505,7 @@
       append_image=DestroyImage(append_image);
       return((Image *) NULL);
     }
-  append_image->matte=matte;
+  append_image->alpha_trait=matte;
   (void) SetImageBackgroundColor(append_image,exception);
   status=MagickTrue;
   x_offset=0;
@@ -810,7 +810,7 @@
   clone_image->metacontent_extent=image->metacontent_extent;
   clone_image->colorspace=image->colorspace;
   clone_image->mask=image->mask;
-  clone_image->matte=image->matte;
+  clone_image->alpha_trait=image->alpha_trait;
   clone_image->columns=image->columns;
   clone_image->rows=image->rows;
   clone_image->dither=image->dither;
@@ -1167,7 +1167,7 @@
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
   assert(image->signature == MagickSignature);
-  return(image->matte);
+  return(image->alpha_trait);
 }
 
 /*
@@ -1891,7 +1891,7 @@
   image->columns=width;
   image->rows=height;
   image->colorspace=background->colorspace;
-  image->matte=background->matte;
+  image->alpha_trait=background->alpha_trait;
   image->fuzz=background->fuzz;
   image->depth=background->depth;
   status=MagickTrue;
@@ -2149,7 +2149,7 @@
   {
     case ActivateAlphaChannel:
     {
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
       break;
     }
     case BackgroundAlphaChannel:
@@ -2163,7 +2163,7 @@
       /*
         Set transparent pixels to background color.
       */
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         break;
       if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
         break;
@@ -2216,14 +2216,14 @@
     }
     case DeactivateAlphaChannel:
     {
-      image->matte=MagickFalse;
+      image->alpha_trait=CopyPixelTrait;
       break;
     }
     case ExtractAlphaChannel:
     {
       status=CompositeImage(image,image,AlphaCompositeOp,MagickTrue,0,0,
         exception);
-      image->matte=MagickFalse;
+      image->alpha_trait=UndefinedPixelTrait;
       break;
     }
     case OpaqueAlphaChannel:
@@ -2242,7 +2242,7 @@
       /*
         Remove transparency.
       */
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         break;
       if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
         break;
@@ -2279,12 +2279,12 @@
           status=MagickFalse;
       }
       image_view=DestroyCacheView(image_view);
-      image->matte=image->background_color.matte;
+      image->alpha_trait=image->background_color.alpha_trait;
       return(status);
     }
     case SetAlphaChannel:
     {
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         status=SetImageAlpha(image,OpaqueAlpha,exception);
       break;
     }
@@ -2349,8 +2349,8 @@
   if ((IsPixelInfoGray(&image->background_color) == MagickFalse) &&
       (IsGrayColorspace(image->colorspace) != MagickFalse))
     (void) TransformImageColorspace(image,RGBColorspace,exception);
-  if ((image->background_color.matte != MagickFalse) &&
-      (image->matte == MagickFalse))
+  if ((image->background_color.alpha_trait == BlendPixelTrait) &&
+      (image->alpha_trait != BlendPixelTrait))
     (void) SetImageAlpha(image,OpaqueAlpha,exception);
   /*
     Set image background color.
@@ -2468,7 +2468,7 @@
   assert(image->signature == MagickSignature);
   assert(color != (const PixelInfo *) NULL);
   image->colorspace=color->colorspace;
-  image->matte=color->matte;
+  image->alpha_trait=color->alpha_trait;
   image->fuzz=color->fuzz;
   image->depth=color->depth;
   status=MagickTrue;
@@ -3124,7 +3124,7 @@
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
   assert(image->signature == MagickSignature);
-  image->matte=MagickTrue;
+  image->alpha_trait=BlendPixelTrait;
   status=MagickTrue;
   image_view=AcquireAuthenticCacheView(image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
@@ -3419,14 +3419,14 @@
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
   image=images;
-  matte=image->matte;
+  matte=image->alpha_trait;
   number_images=1;
   width=image->columns;
   height=image->rows;
   next=GetNextImageInList(image);
   for ( ; next != (Image *) NULL; next=GetNextImageInList(next))
   {
-    if (next->matte != MagickFalse)
+    if (next->alpha_trait == BlendPixelTrait)
       matte=MagickTrue;
     number_images++;
     if (stack != MagickFalse)
@@ -3455,7 +3455,7 @@
       smush_image=DestroyImage(smush_image);
       return((Image *) NULL);
     }
-  smush_image->matte=matte;
+  smush_image->alpha_trait=matte;
   (void) SetImageBackgroundColor(smush_image,exception);
   status=MagickTrue;
   x_offset=0;
diff --git a/MagickCore/image.h b/MagickCore/image.h
index 02bf2c8..b5a058d 100644
--- a/MagickCore/image.h
+++ b/MagickCore/image.h
@@ -164,8 +164,7 @@
     orientation;        /* photo orientation of image */
 
   MagickBooleanType
-    taint,              /* has image been modified since reading */
-    matte;              /* is transparency channel defined and active */
+    taint;              /* has image been modified since reading */
 
   size_t
     columns,            /* physical size of image */
@@ -275,7 +274,7 @@
     mask;
 
   PixelTrait
-    alpha_trait;
+    alpha_trait;       /* is transparency channel defined and active */
 
   size_t
     number_channels,
diff --git a/MagickCore/layer.c b/MagickCore/layer.c
index d1c5f6b..472f1d6 100644
--- a/MagickCore/layer.c
+++ b/MagickCore/layer.c
@@ -104,7 +104,7 @@
 
   if (bounds->x < 0)
     return;
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
   for (y=0; y < (ssize_t) bounds->height; y++)
   {
@@ -270,7 +270,7 @@
   if (coalesce_image == (Image *) NULL)
     return((Image *) NULL);
   (void) SetImageBackgroundColor(coalesce_image,exception);
-  coalesce_image->matte=next->matte;
+  coalesce_image->alpha_trait=next->alpha_trait;
   coalesce_image->page=bounds;
   coalesce_image->dispose=NoneDispose;
   /*
@@ -328,7 +328,7 @@
     coalesce_image->next->previous=coalesce_image;
     previous=coalesce_image;
     coalesce_image=GetNextImageInList(coalesce_image);
-    (void) CompositeImage(coalesce_image,next,next->matte != MagickFalse ?
+    (void) CompositeImage(coalesce_image,next,next->alpha_trait == BlendPixelTrait ?
       OverCompositeOp : CopyCompositeOp,MagickTrue,next->page.x,next->page.y,
       exception);
     (void) CloneImageProfiles(coalesce_image,next);
@@ -423,7 +423,7 @@
         dispose_image=DestroyImage(dispose_image);
         return((Image *) NULL);
       }
-    (void) CompositeImage(current_image,next,next->matte != MagickFalse ?
+    (void) CompositeImage(current_image,next,next->alpha_trait == BlendPixelTrait ?
       OverCompositeOp : CopyCompositeOp,MagickTrue,next->page.x,next->page.y,
       exception);
     /*
@@ -532,8 +532,8 @@
   if (method == CompareAnyLayer)
     return((MagickBooleanType)(IsFuzzyEquivalencePixelInfo(p,q) == MagickFalse));
 
-  o1 = (p->matte != MagickFalse) ? p->alpha : OpaqueAlpha;
-  o2 = (q->matte != MagickFalse) ? q->alpha : OpaqueAlpha;
+  o1 = (p->alpha_trait == BlendPixelTrait) ? p->alpha : OpaqueAlpha;
+  o2 = (q->alpha_trait == BlendPixelTrait) ? q->alpha : OpaqueAlpha;
 
   /*
     Pixel goes from opaque to transprency
@@ -1499,7 +1499,7 @@
         dispose_image=DestroyImage(dispose_image);
         return;
       }
-    (void) CompositeImage(current_image,next,next->matte != MagickFalse ?
+    (void) CompositeImage(current_image,next,next->alpha_trait == BlendPixelTrait ?
       OverCompositeOp : CopyCompositeOp,MagickTrue,next->page.x,next->page.y,
       exception);
     /*
diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h
index 6bde21a..31a76aa 100644
--- a/MagickCore/magick-config.h
+++ b/MagickCore/magick-config.h
@@ -12,7 +12,9 @@
 /* #undef AUTOTRACE_DELEGATE */
 
 /* Define if coders and filters are to be built as modules. */
-/* #undef BUILD_MODULES */
+#ifndef MAGICKCORE_BUILD_MODULES
+#define MAGICKCORE_BUILD_MODULES 1
+#endif
 
 /* Define if you have the bzip2 library */
 #ifndef MAGICKCORE_BZLIB_DELEGATE
@@ -1189,7 +1191,9 @@
 #endif
 
 /* Define if you have JBIG library */
-/* #undef JBIG_DELEGATE */
+#ifndef MAGICKCORE_JBIG_DELEGATE
+#define MAGICKCORE_JBIG_DELEGATE 1
+#endif
 
 /* Define if you have JPEG version 2 "Jasper" library */
 #ifndef MAGICKCORE_JP2_DELEGATE
@@ -1218,7 +1222,9 @@
 #endif
 
 /* Define if you have LQR library */
-/* #undef LQR_DELEGATE */
+#ifndef MAGICKCORE_LQR_DELEGATE
+#define MAGICKCORE_LQR_DELEGATE 1
+#endif
 
 /* Define if using libltdl to support dynamically loadable modules */
 #ifndef MAGICKCORE_LTDL_DELEGATE
@@ -1230,7 +1236,7 @@
 
 /* Define to the system default library search path. */
 #ifndef MAGICKCORE_LT_DLSEARCH_PATH
-#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/atlas:/usr/lib64/freetype-freeworld:/usr/lib/llvm:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/nvidia:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib64/tcl8.5:/usr/lib64/tracker-0.14:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2"
+#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/atlas:/usr/lib64/freetype-freeworld:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/nvidia:/usr/lib64/qt-3.3/lib:/usr/lib64/tracker-0.14:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2"
 #endif
 
 /* The archive extension */
@@ -1529,7 +1535,9 @@
 #endif
 
 /* Define if you have WEBP library */
-/* #undef WEBP_DELEGATE */
+#ifndef MAGICKCORE_WEBP_DELEGATE
+#define MAGICKCORE_WEBP_DELEGATE 1
+#endif
 
 /* Define to use the Windows GDI32 library */
 /* #undef WINGDI32_DELEGATE */
@@ -1538,7 +1546,9 @@
 /* #undef WITH_DMALLOC */
 
 /* Define if you have wmflite library */
-/* #undef WMFLITE_DELEGATE */
+#ifndef MAGICKCORE_WMFLITE_DELEGATE
+#define MAGICKCORE_WMFLITE_DELEGATE 1
+#endif
 
 /* Define if you have wmf library */
 /* #undef WMF_DELEGATE */
diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c
index 40cce5c..c822376 100644
--- a/MagickCore/morphology.c
+++ b/MagickCore/morphology.c
@@ -2731,7 +2731,7 @@
         k = &kernel->values[ kernel->height-1 ];
         k_pixels = p;
         if ( (image->channel_mask != DefaultChannels) ||
-             (image->matte == MagickFalse) )
+             (image->alpha_trait != BlendPixelTrait) )
           { /* No 'Sync' involved.
             ** Convolution is just a simple greyscale channel operation
             */
@@ -2756,7 +2756,7 @@
                 (image->colorspace == CMYKColorspace))
               SetPixelBlack(morphology_image,ClampToQuantum(result.black),q);
             if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-                (image->matte == MagickTrue))
+                (image->alpha_trait == BlendPixelTrait))
               SetPixelAlpha(morphology_image,ClampToQuantum(result.alpha),q);
           }
         else
@@ -2957,7 +2957,7 @@
             k = &kernel->values[ kernel->width*kernel->height-1 ];
             k_pixels = p;
             if ( (image->channel_mask != DefaultChannels) ||
-                 (image->matte == MagickFalse) )
+                 (image->alpha_trait != BlendPixelTrait) )
               { /* No 'Sync' involved.
                 ** Convolution is simple greyscale channel operation
                 */
@@ -2992,7 +2992,7 @@
                   SetPixelBlack(morphology_image,ClampToQuantum(result.black),
                     q);
                 if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-                    (image->matte == MagickTrue))
+                    (image->alpha_trait == BlendPixelTrait))
                   SetPixelAlpha(morphology_image,ClampToQuantum(result.alpha),
                     q);
               }
@@ -3337,7 +3337,7 @@
               (image->colorspace == CMYKColorspace))
             SetPixelBlack(morphology_image,ClampToQuantum(result.black),q);
           if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-              (image->matte == MagickTrue))
+              (image->alpha_trait == BlendPixelTrait))
             SetPixelAlpha(morphology_image,ClampToQuantum(result.alpha),q);
           break;
       }
@@ -3599,7 +3599,7 @@
               (image->colorspace == CMYKColorspace))
             SetPixelBlack(image,ClampToQuantum(result.black),q);
           if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0 &&
-              (image->matte == MagickTrue))
+              (image->alpha_trait == BlendPixelTrait))
             SetPixelAlpha(image,ClampToQuantum(result.alpha),q);
           break;
       }
@@ -3783,7 +3783,7 @@
               (image->colorspace == CMYKColorspace))
             SetPixelBlack(image,ClampToQuantum(result.black),q);
           if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0 &&
-              (image->matte == MagickTrue))
+              (image->alpha_trait == BlendPixelTrait))
             SetPixelAlpha(image,ClampToQuantum(result.alpha),q);
           break;
       }
diff --git a/MagickCore/paint.c b/MagickCore/paint.c
index e9acbcb..e0cdd55 100644
--- a/MagickCore/paint.c
+++ b/MagickCore/paint.c
@@ -174,7 +174,7 @@
     return(MagickFalse);
   if (IsGrayColorspace(image->colorspace) != MagickFalse)
     (void) TransformImageColorspace(image,RGBColorspace,exception);
-  if ((image->matte == MagickFalse) && (draw_info->fill.matte != MagickFalse))
+  if ((image->alpha_trait != BlendPixelTrait) && (draw_info->fill.alpha_trait == BlendPixelTrait))
     (void) SetImageAlpha(image,OpaqueAlpha,exception);
   /*
     Set floodfill state.
@@ -183,7 +183,7 @@
     exception);
   if (floodplane_image == (Image *) NULL)
     return(MagickFalse);
-  floodplane_image->matte=MagickFalse;
+  floodplane_image->alpha_trait=UndefinedPixelTrait;
   floodplane_image->colorspace=GRAYColorspace;
   (void) QueryColorCompliance("#000",AllCompliance,
     &floodplane_image->background_color,exception);
@@ -776,7 +776,7 @@
   if ((IsGrayColorspace(image->colorspace) != MagickFalse) &&
       (IsPixelInfoGray(fill) == MagickFalse))
     (void) TransformImageColorspace(image,RGBColorspace,exception);
-  if ((fill->matte != MagickFalse) && (image->matte == MagickFalse))
+  if ((fill->alpha_trait == BlendPixelTrait) && (image->alpha_trait != BlendPixelTrait))
     (void) SetImageAlpha(image,OpaqueAlpha,exception);
   /*
     Make image color opaque.
@@ -903,7 +903,7 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
   /*
     Make image color transparent.
@@ -1031,7 +1031,7 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
   /*
     Make image color transparent.
diff --git a/MagickCore/pixel-accessor.h b/MagickCore/pixel-accessor.h
index d1dd490..b6575f4 100644
--- a/MagickCore/pixel-accessor.h
+++ b/MagickCore/pixel-accessor.h
@@ -437,13 +437,13 @@
 static inline MagickBooleanType IsPixelInfoEquivalent(
   const PixelInfo *restrict p,const PixelInfo *restrict q)
 {
-  if ((p->matte != MagickFalse) && (q->matte == MagickFalse) &&
+  if ((p->alpha_trait == BlendPixelTrait) && (q->alpha_trait != BlendPixelTrait) &&
       (fabs(p->alpha-OpaqueAlpha) >= MagickEpsilon))
     return(MagickFalse);
-  if ((q->matte != MagickFalse) && (p->matte == MagickFalse) &&
+  if ((q->alpha_trait == BlendPixelTrait) && (p->alpha_trait != BlendPixelTrait) &&
       (fabs(q->alpha-OpaqueAlpha)) >= MagickEpsilon)
     return(MagickFalse);
-  if ((p->matte != MagickFalse) && (q->matte != MagickFalse))
+  if ((p->alpha_trait == BlendPixelTrait) && (q->alpha_trait == BlendPixelTrait))
     {
       if (fabs(p->alpha-q->alpha) >= MagickEpsilon)
         return(MagickFalse);
@@ -664,8 +664,9 @@
     pixel[image->channel_map[BlackPixelChannel].offset]=
       ClampToQuantum(pixel_info->black);
   if (image->channel_map[AlphaPixelChannel].traits != UndefinedPixelTrait)
-    pixel[image->channel_map[AlphaPixelChannel].offset]=pixel_info->matte ==
-      MagickFalse ? OpaqueAlpha : ClampToQuantum(pixel_info->alpha);
+    pixel[image->channel_map[AlphaPixelChannel].offset]=
+      pixel_info->alpha_trait != BlendPixelTrait ? OpaqueAlpha :
+      ClampToQuantum(pixel_info->alpha);
 }
 
 static inline void SetPixelL(const Image *restrict image,const Quantum L,
diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c
index 8381500..a1856c4 100644
--- a/MagickCore/pixel.c
+++ b/MagickCore/pixel.c
@@ -2006,7 +2006,7 @@
 {
   pixel->storage_class=DirectClass;
   pixel->colorspace=sRGBColorspace;
-  pixel->matte=MagickFalse;
+  pixel->alpha_trait=UndefinedPixelTrait;
   pixel->fuzz=0.0;
   pixel->depth=MAGICKCORE_QUANTUM_DEPTH;
   pixel->red=0.0;
@@ -2019,7 +2019,7 @@
     return;
   pixel->storage_class=image->storage_class;
   pixel->colorspace=image->colorspace;
-  pixel->matte=image->matte;
+  pixel->alpha_trait=image->alpha_trait;
   pixel->depth=image->depth;
   pixel->fuzz=image->fuzz;
 }
@@ -3736,7 +3736,7 @@
       case 'A':
       {
         quantum_map[i]=AlphaQuantum;
-        image->matte=MagickTrue;
+        image->alpha_trait=BlendPixelTrait;
         break;
       }
       case 'B':
@@ -3783,7 +3783,7 @@
       case 'o':
       {
         quantum_map[i]=OpacityQuantum;
-        image->matte=MagickTrue;
+        image->alpha_trait=BlendPixelTrait;
         break;
       }
       case 'P':
@@ -3910,7 +3910,7 @@
   (void) ResetMagickMemory(image->channel_map,0,MaxPixelChannels*
     sizeof(*image->channel_map));
   trait=UpdatePixelTrait;
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     trait=(PixelTrait) (trait | BlendPixelTrait);
   n=0;
   if (image->colorspace == GRAYColorspace)
@@ -3927,7 +3927,7 @@
     }
   if (image->colorspace == CMYKColorspace)
     SetPixelChannelAttributes(image,BlackPixelChannel,trait,n++);
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait != UndefinedPixelTrait)
     SetPixelChannelAttributes(image,AlphaPixelChannel,CopyPixelTrait,n++);
   if (image->storage_class == PseudoClass)
     SetPixelChannelAttributes(image,IndexPixelChannel,CopyPixelTrait,n++);
@@ -4988,7 +4988,7 @@
 static inline void AlphaBlendPixelInfo(const Image *image,
   const Quantum *pixel,PixelInfo *pixel_info,double *alpha)
 {
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     {
       *alpha=1.0;
       pixel_info->red=(double) GetPixelRed(image,pixel);
@@ -5544,7 +5544,7 @@
     destination->fuzz,(double) MagickSQ1_2);
   scale=1.0;
   distance=0.0;
-  if (source->matte != MagickFalse)
+  if (source->alpha_trait == BlendPixelTrait)
     {
       /*
         Transparencies are involved - set alpha distance
@@ -5663,13 +5663,13 @@
       (double) MagickSQ1_2);
   scale=1.0;
   distance=0.0;
-  if ((p->matte != MagickFalse) || (q->matte != MagickFalse))
+  if ((p->alpha_trait == BlendPixelTrait) || (q->alpha_trait == BlendPixelTrait))
     {
       /*
         Transparencies are involved - set alpha distance.
       */
-      pixel=(p->matte != MagickFalse ? p->alpha : OpaqueAlpha)-
-        (q->matte != MagickFalse ? q->alpha : OpaqueAlpha);
+      pixel=(p->alpha_trait == BlendPixelTrait ? p->alpha : OpaqueAlpha)-
+        (q->alpha_trait == BlendPixelTrait ? q->alpha : OpaqueAlpha);
       distance=pixel*pixel;
       if (distance > fuzz)
         return(MagickFalse);
@@ -5677,9 +5677,9 @@
         Generate a alpha scaling factor to generate a 4D cone on colorspace.
         If one color is transparent, distance has no color component.
       */
-      if (p->matte != MagickFalse)
+      if (p->alpha_trait == BlendPixelTrait)
         scale=(QuantumScale*p->alpha);
-      if (q->matte != MagickFalse)
+      if (q->alpha_trait == BlendPixelTrait)
         scale*=(QuantumScale*q->alpha);
       if (scale <= MagickEpsilon )
         return(MagickTrue);
@@ -5773,8 +5773,8 @@
     channel=GetPixelChannelChannel(image,i);
     SetPixelChannelTraits(image,channel,
       GetChannelBit(channel_mask,channel) == 0 ? CopyPixelTrait :
-      image->matte == MagickFalse || (channel == AlphaPixelChannel) ?
-      UpdatePixelTrait : (PixelTrait) (UpdatePixelTrait | BlendPixelTrait));
+      image->alpha_trait != BlendPixelTrait || (channel == AlphaPixelChannel) ?
+      UpdatePixelTrait : (PixelTrait) (UpdatePixelTrait | image->alpha_trait));
   }
   if (image->storage_class == PseudoClass)
     SetPixelChannelTraits(image,IndexPixelChannel,CopyPixelTrait);
diff --git a/MagickCore/pixel.h b/MagickCore/pixel.h
index 3e6ee22..cd1ac2a 100644
--- a/MagickCore/pixel.h
+++ b/MagickCore/pixel.h
@@ -129,8 +129,8 @@
   ColorspaceType
     colorspace;
 
-  MagickBooleanType
-    matte;
+  PixelTrait
+    alpha_trait;
 
   double
     fuzz;
diff --git a/MagickCore/profile.c b/MagickCore/profile.c
index 8944be2..ae5614f 100644
--- a/MagickCore/profile.c
+++ b/MagickCore/profile.c
@@ -949,19 +949,19 @@
             {
               case cmsSigRgbData:
               {
-                image->type=image->matte == MagickFalse ? TrueColorType :
+                image->type=image->alpha_trait != BlendPixelTrait ? TrueColorType :
                   TrueColorMatteType;
                 break;
               }
               case cmsSigCmykData:
               {
-                image->type=image->matte == MagickFalse ? ColorSeparationType :
+                image->type=image->alpha_trait != BlendPixelTrait ? ColorSeparationType :
                   ColorSeparationMatteType;
                 break;
               }
               case cmsSigGrayData:
               {
-                image->type=image->matte == MagickFalse ? GrayscaleType :
+                image->type=image->alpha_trait != BlendPixelTrait ? GrayscaleType :
                   GrayscaleMatteType;
                 break;
               }
diff --git a/MagickCore/property.c b/MagickCore/property.c
index a8422b9..8026348 100644
--- a/MagickCore/property.c
+++ b/MagickCore/property.c
@@ -2314,7 +2314,7 @@
       (void) FormatLocaleString(value,MaxTextExtent,"%s %s %s",
         CommandOptionToMnemonic(MagickClassOptions,(ssize_t) image->storage_class),
         CommandOptionToMnemonic(MagickColorspaceOptions,(ssize_t) colorspace),
-        IfMagickTrue(image->matte) ? "Matte" : "");
+        image->alpha_trait == BlendPixelTrait ? "Matte" : "");
       break;
     }
     case 's': /* Image scene number */
@@ -2366,7 +2366,7 @@
     case 'A': /* Image alpha channel  */
     {
       (void) FormatLocaleString(value,MaxTextExtent,"%s",
-        CommandOptionToMnemonic(MagickBooleanOptions,(ssize_t) image->matte));
+        CommandOptionToMnemonic(MagickBooleanOptions,(ssize_t) image->alpha_trait));
       break;
     }
     case 'C': /* Image compression method.  */
@@ -2525,7 +2525,7 @@
             CommandOptionToMnemonic(MagickColorspaceOptions,(ssize_t)
             image->colorspace));
           LocaleLower(value);
-          if( IfMagickTrue(image->matte) )
+          if( image->alpha_trait == BlendPixelTrait )
             (void) ConcatenateMagickString(value,"a",MaxTextExtent);
           break;
         }
diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c
index 87d08d5..b8e2597 100644
--- a/MagickCore/quantize.c
+++ b/MagickCore/quantize.c
@@ -751,7 +751,7 @@
   MagickBooleanType
     associate_alpha;
 
-  associate_alpha=image->matte;
+  associate_alpha=image->alpha_trait;
   if (cube_info->quantize_info->colorspace == TransparentColorspace)
     associate_alpha=MagickFalse;
   if ((cube_info->quantize_info->number_colors == 2) &&
@@ -2233,7 +2233,7 @@
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       index=1UL*GetPixelIndex(image,p);
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           alpha=(double) (QuantumScale*GetPixelAlpha(image,p));
           beta=(double) (QuantumScale*image->colormap[index].alpha);
@@ -2434,7 +2434,7 @@
           (image->colorspace == CMYKColorspace))
         SetPixelBlack(image,PosterizePixel(GetPixelBlack(image,q)),q);
       if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-          (image->matte == MagickTrue))
+          (image->alpha_trait == BlendPixelTrait))
         SetPixelAlpha(image,PosterizePixel(GetPixelAlpha(image,q)),q);
       q+=GetPixelChannels(image);
     }
@@ -2737,7 +2737,7 @@
     maximum_colors=MaxColormapSize;
   if (maximum_colors > MaxColormapSize)
     maximum_colors=MaxColormapSize;
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     {
       if ((image->columns*image->rows) <= maximum_colors)
         (void) DirectToColormapImage(image,exception);
@@ -2761,7 +2761,7 @@
         colors>>=2;
       if ((quantize_info->dither_method != NoDitherMethod) && (depth > 2))
         depth--;
-      if ((image->matte != MagickFalse) && (depth > 5))
+      if ((image->alpha_trait == BlendPixelTrait) && (depth > 5))
         depth--;
     }
   /*
diff --git a/MagickCore/quantum.c b/MagickCore/quantum.c
index 5ac0bac..da705a7 100644
--- a/MagickCore/quantum.c
+++ b/MagickCore/quantum.c
@@ -494,24 +494,24 @@
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   quantum_type=RGBQuantum;
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     quantum_type=RGBAQuantum;
   if (image->colorspace == CMYKColorspace)
     {
       quantum_type=CMYKQuantum;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         quantum_type=CMYKAQuantum;
     }
   if (IsImageGray(image,exception) != MagickFalse)
     {
       quantum_type=GrayQuantum;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         quantum_type=GrayAlphaQuantum;
     }
   if (image->storage_class == PseudoClass)
     {
       quantum_type=IndexQuantum;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         quantum_type=IndexAlphaQuantum;
     }
   return(quantum_type);
diff --git a/MagickCore/resample.c b/MagickCore/resample.c
index 7e080eb..45d8a59 100644
--- a/MagickCore/resample.c
+++ b/MagickCore/resample.c
@@ -542,7 +542,7 @@
   pixel->red = pixel->green = pixel->blue = 0.0;
   if (pixel->colorspace == CMYKColorspace)
     pixel->black = 0.0;
-  if (pixel->matte != MagickFalse)
+  if (pixel->alpha_trait == BlendPixelTrait)
     pixel->alpha = 0.0;
 
   /*
@@ -607,7 +607,7 @@
         pixel->alpha  += weight*GetPixelAlpha(resample_filter->image,pixels);
         divisor_m += weight;
 
-        if (pixel->matte != MagickFalse)
+        if (pixel->alpha_trait == BlendPixelTrait)
           weight *= QuantumScale*((double) GetPixelAlpha(resample_filter->image,pixels));
         pixel->red   += weight*GetPixelRed(resample_filter->image,pixels);
         pixel->green += weight*GetPixelGreen(resample_filter->image,pixels);
diff --git a/MagickCore/resize.c b/MagickCore/resize.c
index 45bd8fb..f2853e7 100644
--- a/MagickCore/resize.c
+++ b/MagickCore/resize.c
@@ -2660,7 +2660,7 @@
       filter_type=PointFilter;
     else
       if ((image->storage_class == PseudoClass) ||
-          IfMagickTrue(image->matte) ||
+          image->alpha_trait == BlendPixelTrait ||
           ((x_factor*y_factor) > 1.0))
         filter_type=MitchellFilter;
   resize_filter=AcquireResizeFilter(image,filter_type,MagickFalse,exception);
@@ -3411,7 +3411,7 @@
   if (thumbnail_image == (Image *) NULL)
     return(thumbnail_image);
   (void) ParseAbsoluteGeometry("0x0+0+0",&thumbnail_image->page);
-  if( IfMagickFalse(thumbnail_image->matte) )
+  if( IfMagickFalse(thumbnail_image->alpha_trait) )
     (void) SetImageAlphaChannel(thumbnail_image,OpaqueAlphaChannel,exception);
   thumbnail_image->depth=8;
   thumbnail_image->interlace=NoInterlace;
diff --git a/MagickCore/shear.c b/MagickCore/shear.c
index e540838..0e17470 100644
--- a/MagickCore/shear.c
+++ b/MagickCore/shear.c
@@ -1897,7 +1897,7 @@
       integral_image=DestroyImage(integral_image);
       return(integral_image);
     }
-  if (integral_image->matte == MagickFalse)
+  if (integral_image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(integral_image,OpaqueAlphaChannel,exception);
   /*
     Compute image size.
@@ -1921,7 +1921,7 @@
   /*
     Shear the image.
   */
-  if (shear_image->matte == MagickFalse)
+  if (shear_image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(shear_image,OpaqueAlphaChannel,exception);
   status=XShearImage(shear_image,shear.x,image->columns,image->rows,x_offset,
     (ssize_t) (shear_image->rows-image->rows)/2,exception);
@@ -2048,7 +2048,7 @@
       integral_image=DestroyImage(integral_image);
       return(integral_image);
     }
-  if (integral_image->matte == MagickFalse)
+  if (integral_image->alpha_trait != BlendPixelTrait)
     (void) SetImageAlphaChannel(integral_image,OpaqueAlphaChannel,exception);
   /*
     Compute image size.
diff --git a/MagickCore/transform.c b/MagickCore/transform.c
index 85cf8f6..d64d049 100644
--- a/MagickCore/transform.c
+++ b/MagickCore/transform.c
@@ -1084,7 +1084,7 @@
       return((Image *) NULL);
     }
   if (extent_image->background_color.alpha != OpaqueAlpha)
-    extent_image->matte=MagickTrue;
+    extent_image->alpha_trait=BlendPixelTrait;
   (void) SetImageBackgroundColor(extent_image,exception);
   (void) CompositeImage(extent_image,image,image->compose,MagickTrue,
     -geometry->x,-geometry->y,exception);
diff --git a/MagickCore/version.h b/MagickCore/version.h
index 5786607..1d09dc4 100644
--- a/MagickCore/version.h
+++ b/MagickCore/version.h
@@ -27,14 +27,14 @@
 */
 #define MagickPackageName "ImageMagick"
 #define MagickCopyright  "Copyright (C) 1999-2012 ImageMagick Studio LLC"
-#define MagickSVNRevision  "9117:9136M"
+#define MagickSVNRevision  "Unversioned"
 #define MagickLibVersion  0x700
 #define MagickLibVersionText  "7.0.0"
 #define MagickLibVersionNumber  7,0,0
 #define MagickLibAddendum  "-0"
 #define MagickLibInterface  7
 #define MagickLibMinInterface  7
-#define MagickReleaseDate  "2012-08-27"
+#define MagickReleaseDate  "2012-08-28"
 #define MagickChangeDate   "20120808"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
diff --git a/MagickCore/xwindow.c b/MagickCore/xwindow.c
index 9a2b866..a9c203b 100644
--- a/MagickCore/xwindow.c
+++ b/MagickCore/xwindow.c
@@ -560,7 +560,7 @@
   (void) GetOneVirtualPixelInfo(image,UndefinedVirtualPixelMethod,(ssize_t) x,
     (ssize_t) y,&annotate_image->background_color,exception);
   if (annotate_info->stencil == ForegroundStencil)
-    annotate_image->matte=MagickTrue;
+    annotate_image->alpha_trait=BlendPixelTrait;
   annotate_view=AcquireAuthenticCacheView(annotate_image,exception);
   for (y=0; y < (int) annotate_image->rows; y++)
   {
@@ -695,11 +695,11 @@
     Composite text onto the image.
   */
   (void) XParseGeometry(annotate_info->geometry,&x,&y,&width,&height);
-  matte=image->matte;
+  matte=image->alpha_trait;
   (void) CompositeImage(image,annotate_image,
-    annotate_image->matte != MagickFalse ? OverCompositeOp : CopyCompositeOp,
+    annotate_image->alpha_trait == BlendPixelTrait ? OverCompositeOp : CopyCompositeOp,
     MagickTrue,(ssize_t) x,(ssize_t) y,exception);
-  image->matte=matte;
+  image->alpha_trait=matte;
   annotate_image=DestroyImage(annotate_image);
   return(MagickTrue);
 }
@@ -2483,7 +2483,7 @@
     (ssize_t) y,&draw_image->background_color,exception);
   if (SetImageStorageClass(draw_image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
-  draw_image->matte=MagickTrue;
+  draw_image->alpha_trait=BlendPixelTrait;
   draw_view=AcquireAuthenticCacheView(draw_image,exception);
   for (y=0; y < (int) draw_image->rows; y++)
   {
@@ -2639,10 +2639,10 @@
       (ssize_t) x,(ssize_t) y,exception);
   else
     {
-      matte=image->matte;
+      matte=image->alpha_trait;
       (void) CompositeImage(image,draw_image,OverCompositeOp,MagickTrue,
         (ssize_t) x,(ssize_t) y,exception);
-      image->matte=matte;
+      image->alpha_trait=matte;
     }
   draw_image=DestroyImage(draw_image);
   return(MagickTrue);
@@ -5732,7 +5732,7 @@
   window->ximage=ximage;
   matte_image=(XImage *) NULL;
   if ((window->shape != MagickFalse) && (window->image != (Image *) NULL))
-    if ((window->image->matte != MagickFalse) &&
+    if ((window->image->alpha_trait == BlendPixelTrait) &&
         ((int) width <= XDisplayWidth(display,window->screen)) &&
         ((int) height <= XDisplayHeight(display,window->screen)))
       {
@@ -5918,7 +5918,7 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   canvas=image;
   if ((window->immutable == MagickFalse) &&
-      (image->storage_class == DirectClass) && (image->matte != MagickFalse))
+      (image->storage_class == DirectClass) && (image->alpha_trait == BlendPixelTrait))
     {
       char
         size[MaxTextExtent];
@@ -6544,7 +6544,7 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   canvas=image;
   if ((window->immutable != MagickFalse) &&
-      (image->storage_class == DirectClass) && (image->matte != MagickFalse))
+      (image->storage_class == DirectClass) && (image->alpha_trait == BlendPixelTrait))
     {
       char
         size[MaxTextExtent];
@@ -7526,7 +7526,7 @@
       (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
       ConcatenateColorComponent(&pixel,BlackPixelChannel,X11Compliance,tuple);
     }
-  if (pixel.matte != MagickFalse)
+  if (pixel.alpha_trait == BlendPixelTrait)
     {
       (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
       ConcatenateColorComponent(&pixel,AlphaPixelChannel,X11Compliance,tuple);
@@ -7783,7 +7783,7 @@
       number_colors=(unsigned int) (map_info->base_pixel+
         (map_info->red_max+1)*(map_info->green_max+1)*(map_info->blue_max+1));
       if ((map_info->red_max*map_info->green_max*map_info->blue_max) != 0)
-        if ((image->matte == MagickFalse) &&
+        if ((image->alpha_trait != BlendPixelTrait) &&
             (resource_info->color_recovery == MagickFalse) &&
             (resource_info->quantize_info->dither_method != NoDitherMethod) &&
             (number_colors < MaxColormapSize))
diff --git a/MagickWand/compare.c b/MagickWand/compare.c
index 035109f..f7c5e0b 100644
--- a/MagickWand/compare.c
+++ b/MagickWand/compare.c
@@ -1068,7 +1068,7 @@
                   (void) FormatLocaleFile(stderr,"    blue: %g (%g)\n",
                     QuantumRange*channel_distortion[BluePixelChannel],
                     channel_distortion[BluePixelChannel]);
-                  if (image->matte != MagickFalse)
+                  if (image->alpha_trait == BlendPixelTrait)
                     (void) FormatLocaleFile(stderr,"    alpha: %g (%g)\n",
                       QuantumRange*channel_distortion[AlphaPixelChannel],
                       channel_distortion[AlphaPixelChannel]);
@@ -1088,7 +1088,7 @@
                   (void) FormatLocaleFile(stderr,"    black: %g (%g)\n",
                     QuantumRange*channel_distortion[BlackPixelChannel],
                     channel_distortion[BlackPixelChannel]);
-                  if (image->matte != MagickFalse)
+                  if (image->alpha_trait == BlendPixelTrait)
                     (void) FormatLocaleFile(stderr,"    alpha: %g (%g)\n",
                       QuantumRange*channel_distortion[AlphaPixelChannel],
                       channel_distortion[AlphaPixelChannel]);
@@ -1099,7 +1099,7 @@
                   (void) FormatLocaleFile(stderr,"    gray: %g (%g)\n",
                     QuantumRange*channel_distortion[GrayPixelChannel],
                     channel_distortion[GrayPixelChannel]);
-                  if (image->matte != MagickFalse)
+                  if (image->alpha_trait == BlendPixelTrait)
                     (void) FormatLocaleFile(stderr,"    alpha: %g (%g)\n",
                       QuantumRange*channel_distortion[AlphaPixelChannel],
                       channel_distortion[AlphaPixelChannel]);
@@ -1126,7 +1126,7 @@
                     channel_distortion[GreenPixelChannel]);
                   (void) FormatLocaleFile(stderr,"    blue: %g\n",
                     channel_distortion[BluePixelChannel]);
-                  if (image->matte != MagickFalse)
+                  if (image->alpha_trait == BlendPixelTrait)
                     (void) FormatLocaleFile(stderr,"    alpha: %g\n",
                       channel_distortion[AlphaPixelChannel]);
                   break;
@@ -1141,7 +1141,7 @@
                     channel_distortion[YellowPixelChannel]);
                   (void) FormatLocaleFile(stderr,"    black: %g\n",
                     channel_distortion[BlackPixelChannel]);
-                  if (image->matte != MagickFalse)
+                  if (image->alpha_trait == BlendPixelTrait)
                     (void) FormatLocaleFile(stderr,"    alpha: %g\n",
                       channel_distortion[AlphaPixelChannel]);
                   break;
@@ -1150,7 +1150,7 @@
                 {
                   (void) FormatLocaleFile(stderr,"    gray: %g\n",
                     channel_distortion[GrayPixelChannel]);
-                  if (image->matte != MagickFalse)
+                  if (image->alpha_trait == BlendPixelTrait)
                     (void) FormatLocaleFile(stderr,"    alpha: %g\n",
                       channel_distortion[AlphaPixelChannel]);
                   break;
diff --git a/MagickWand/drawing-wand.c b/MagickWand/drawing-wand.c
index b692029..ce07484 100644
--- a/MagickWand/drawing-wand.c
+++ b/MagickWand/drawing-wand.c
@@ -401,7 +401,7 @@
 
       GetPixelInfo(wand->image,&pixel);
       pixel.colorspace=sRGBColorspace;
-      pixel.matte=packet->alpha != OpaqueAlpha ? MagickTrue : MagickFalse;
+      pixel.alpha_trait=packet->alpha != OpaqueAlpha ? MagickTrue : MagickFalse;
       pixel.red=(double) packet->red;
       pixel.green=(double) packet->green;
       pixel.blue=(double) packet->blue;
@@ -2464,7 +2464,7 @@
   if (child != (XMLTreeInfo *) NULL)
     {
       if (CurrentContext->fill.alpha != OpaqueAlpha)
-        pixel.matte=CurrentContext->fill.alpha != OpaqueAlpha ?
+        pixel.alpha_trait=CurrentContext->fill.alpha != OpaqueAlpha ?
           MagickTrue : MagickFalse;
       pixel=CurrentContext->fill;
       GetColorTuple(&pixel,MagickTrue,value);
@@ -2530,7 +2530,7 @@
   if (child != (XMLTreeInfo *) NULL)
     {
       if (CurrentContext->stroke.alpha != OpaqueAlpha)
-        pixel.matte=CurrentContext->stroke.alpha != OpaqueAlpha ?
+        pixel.alpha_trait=CurrentContext->stroke.alpha != OpaqueAlpha ?
           MagickTrue : MagickFalse;
       pixel=CurrentContext->stroke;
       GetColorTuple(&pixel,MagickTrue,value);
@@ -2623,7 +2623,7 @@
   if (child != (XMLTreeInfo *) NULL)
     {
       if (CurrentContext->undercolor.alpha != OpaqueAlpha)
-        pixel.matte=CurrentContext->undercolor.alpha != OpaqueAlpha ?
+        pixel.alpha_trait=CurrentContext->undercolor.alpha != OpaqueAlpha ?
           MagickTrue : MagickFalse;
       pixel=CurrentContext->undercolor;
       GetColorTuple(&pixel,MagickTrue,value);
diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c
index ff3b218..53ec388 100644
--- a/MagickWand/magick-image.c
+++ b/MagickWand/magick-image.c
@@ -10016,9 +10016,9 @@
 
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  if( IfMagickFalse(wand->images->matte) && IsMagickTrue(matte))
+  if( IfMagickFalse(wand->images->alpha_trait) && IsMagickTrue(matte))
     (void) SetImageAlpha(wand->images,OpaqueAlpha,wand->exception);
-  wand->images->matte=matte;
+  wand->images->alpha_trait=matte;
   return(MagickTrue);
 }
 
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index 659871a..9eb8577 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -476,7 +476,7 @@
       (image->colorspace == CMYKColorspace))
     number_colors++;
   if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-      (image->matte != MagickFalse))
+      (image->alpha_trait == BlendPixelTrait))
     number_colors++;
 
   /*
@@ -579,7 +579,7 @@
             (image->colorspace == CMYKColorspace))
           sparse_arguments[x++] = QuantumScale*color.black;
         if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-            (image->matte != MagickFalse))
+            (image->alpha_trait == BlendPixelTrait))
           sparse_arguments[x++] = QuantumScale*color.alpha;
       }
       else {
@@ -619,7 +619,7 @@
           token[0] = ','; /* used this token - get another */
         }
         if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-            (image->matte != MagickFalse))
+            (image->alpha_trait == BlendPixelTrait))
           {
           while ( token[0] == ',' ) GetMagickToken(p,&p,token);
           if ( token[0] == '\0' || isalpha((int)token[0]) || token[0] == '#' )
@@ -1120,7 +1120,7 @@
                 break;
               for (x=0; x < (ssize_t) mask_image->columns; x++)
               {
-                if (mask_image->matte == MagickFalse)
+                if (mask_image->alpha_trait != BlendPixelTrait)
                   SetPixelAlpha(mask_image,GetPixelIntensity(mask_image,q),q);
                 SetPixelRed(mask_image,GetPixelAlpha(mask_image,q),q);
                 SetPixelGreen(mask_image,GetPixelAlpha(mask_image,q),q);
@@ -1131,7 +1131,7 @@
                 break;
             }
             mask_view=DestroyCacheView(mask_view);
-            mask_image->matte=MagickTrue;
+            mask_image->alpha_trait=BlendPixelTrait;
             (void) SetImageMask(*image,mask_image,exception);
             break;
           }
@@ -2441,8 +2441,9 @@
                 /*
                   Composite region.
                 */
-                (void) CompositeImage(region_image,*image,region_image->matte !=
-                   MagickFalse ? CopyCompositeOp : OverCompositeOp,MagickTrue,
+                (void) CompositeImage(region_image,*image,
+                   region_image->alpha_trait == BlendPixelTrait ?
+                   CopyCompositeOp : OverCompositeOp,MagickTrue,
                    region_geometry.x,region_geometry.y,exception);
                 *image=DestroyImage(*image);
                 *image=region_image;
@@ -3187,9 +3188,10 @@
         Composite transformed region onto image.
       */
       (void) SyncImageSettings(mogrify_info,*image,exception);
-      (void) CompositeImage(region_image,*image,region_image->matte !=
-         MagickFalse ? CopyCompositeOp : OverCompositeOp,MagickTrue,
-         region_geometry.x,region_geometry.y,exception);
+      (void) CompositeImage(region_image,*image,
+         region_image->alpha_trait == BlendPixelTrait ? CopyCompositeOp :
+         OverCompositeOp,MagickTrue,region_geometry.x,region_geometry.y,
+         exception);
       *image=DestroyImage(*image);
       *image=region_image;
       region_image = (Image *) NULL;
diff --git a/MagickWand/operation.c b/MagickWand/operation.c
index 0325f50..d4ff500 100644
--- a/MagickWand/operation.c
+++ b/MagickWand/operation.c
@@ -217,7 +217,7 @@
       (image->colorspace == CMYKColorspace))
     number_colors++;
   if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-      IfMagickTrue(image->matte))
+      image->alpha_trait == BlendPixelTrait)
     number_colors++;
 
   /*
@@ -296,7 +296,7 @@
           (image->colorspace == CMYKColorspace))
         sparse_arguments[x++] = QuantumScale*color.black;
       if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-          IfMagickTrue(image->matte))
+          image->alpha_trait == BlendPixelTrait)
         sparse_arguments[x++] = QuantumScale*color.alpha;
     }
     else {
@@ -336,7 +336,7 @@
         token[0] = ','; /* used this token - get another */
       }
       if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
-          IfMagickTrue(image->matte))
+          image->alpha_trait == BlendPixelTrait)
         {
         while ( token[0] == ',' ) GetMagickToken(p,&p,token);
         if ( token[0] == '\0' || isalpha((int)token[0]) || token[0] == '#' )
@@ -2014,7 +2014,7 @@
               break;
             for (x=0; x < (ssize_t) mask_image->columns; x++)
             {
-              if (IfMagickFalse(mask_image->matte))
+              if (IfMagickFalse(mask_image->alpha_trait))
                 SetPixelAlpha(mask_image,GetPixelIntensity(mask_image,q),q);
               SetPixelRed(mask_image,GetPixelAlpha(mask_image,q),q);
               SetPixelGreen(mask_image,GetPixelAlpha(mask_image,q),q);
@@ -2026,7 +2026,7 @@
           }
           /* clean up and set the write mask */
           mask_view=DestroyCacheView(mask_view);
-          mask_image->matte=MagickTrue;
+          mask_image->alpha_trait=BlendPixelTrait;
           (void) SetImageMask(_image,mask_image,_exception);
           mask_image=DestroyImage(mask_image);
           break;
diff --git a/MagickWand/pixel-wand.c b/MagickWand/pixel-wand.c
index 2ae10d2..1556390 100644
--- a/MagickWand/pixel-wand.c
+++ b/MagickWand/pixel-wand.c
@@ -754,7 +754,7 @@
   if (wand->pixel.colorspace == CMYKColorspace)
     (void) FormatLocaleString(color+strlen(color),MaxTextExtent,",%g",
       (double) (QuantumScale*wand->pixel.black));
-  if (wand->pixel.matte != MagickFalse)
+  if (wand->pixel.alpha_trait == BlendPixelTrait)
     (void) FormatLocaleString(color+strlen(color),MaxTextExtent,",%g",
       (double) (QuantumScale*wand->pixel.alpha));
   return(ConstantString(color));
@@ -2150,7 +2150,7 @@
   wand->pixel.blue=(double) GetPixelBlue(image,pixel);
   wand->pixel.black=(double) GetPixelBlack(image,pixel);
   wand->pixel.alpha=(double) GetPixelAlpha(image,pixel);
-  wand->pixel.matte=GetPixelAlpha(image,pixel) != OpaqueAlpha ? MagickTrue :
+  wand->pixel.alpha_trait=GetPixelAlpha(image,pixel) != OpaqueAlpha ? MagickTrue :
     MagickFalse;
 }
 
diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs
index 7b5feb9..b2a203b 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -1700,7 +1700,7 @@
               break;
             }
           for ( ; image; image=image->next)
-            image->matte=sp != 0 ? MagickTrue : MagickFalse;
+            image->alpha_trait=sp != 0 ? BlendPixelTrait : UndefinedPixelTrait;
           break;
         }
       if (LocaleCompare(attribute,"memory-limit") == 0)
@@ -4027,7 +4027,7 @@
         ChannelFeatures(BlueChannel,i);
         if (image->colorspace == CMYKColorspace)
           ChannelFeatures(BlackChannel,i);
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           ChannelFeatures(AlphaChannel,i);
       }
       channel_features=(ChannelFeatures *)
@@ -5145,7 +5145,8 @@
           if (LocaleCompare(attribute,"matte") == 0)
             {
               if (image != (Image *) NULL)
-                s=newSViv((ssize_t) image->matte);
+                s=newSViv((ssize_t) image->alpha_trait == BlendPixelTrait ?
+                  1 : 0);
               PUSHs(s ? sv_2mortal(s) : &sv_undef);
               continue;
             }
@@ -6460,12 +6461,12 @@
         goto PerlException;
       }
     map="RGB";
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       map="RGBA";
     if (image->colorspace == CMYKColorspace)
       {
         map="CMYK";
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           map="CMYKA";
       }
     normalize=MagickFalse;
@@ -7955,8 +7956,8 @@
             {
               QueryColorCompliance(argument_list[1].string_reference,
                 AllCompliance,&image->background_color,exception);
-              if ((image->background_color.matte != MagickFalse) &&
-                  (image->matte == MagickFalse))
+              if ((image->background_color.alpha_trait == BlendPixelTrait) &&
+                  (image->alpha_trait != BlendPixelTrait))
                 (void) SetImageAlpha(image,OpaqueAlpha,exception);
             }
           image=RotateImage(image,argument_list[0].real_reference,exception);
@@ -8420,7 +8421,7 @@
                   opacity=(Quantum) StringToDoubleInterval(
                     argument_list[6].string_reference,(double) QuantumRange+
                     1.0);
-                  if (composite_image->matte != MagickTrue)
+                  if (composite_image->alpha_trait == BlendPixelTrait)
                     (void) SetImageAlpha(composite_image,OpaqueAlpha,exception);
                   composite_view=AcquireAuthenticCacheView(composite_image,
                     exception);
@@ -8915,7 +8916,7 @@
             geometry.x=argument_list[1].integer_reference;
           if (attribute_flag[2] != 0)
             geometry.y=argument_list[2].integer_reference;
-          if (image->matte == MagickFalse)
+          if (image->alpha_trait != BlendPixelTrait)
             (void) SetImageAlpha(image,OpaqueAlpha,exception);
           (void) GetOneVirtualPixelInfo(image,UndefinedVirtualPixelMethod,
             geometry.x,geometry.y,&target,exception);
@@ -11964,7 +11965,7 @@
       PUSHs(sv_2mortal(newSViv((size_t) floor(color.blue+0.5))));
       if (color.colorspace == CMYKColorspace)
         PUSHs(sv_2mortal(newSViv((size_t) floor(color.black+0.5))));
-      if (color.matte != MagickFalse)
+      if (color.alpha_trait == BlendPixelTrait)
         PUSHs(sv_2mortal(newSViv((size_t) floor(color.alpha+0.5))));
     }
 
@@ -13956,7 +13957,7 @@
       ChannelStatistics(BlueChannel);
       if (image->colorspace == CMYKColorspace)
         ChannelStatistics(BlackChannel);
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         ChannelStatistics(AlphaChannel);
       channel_statistics=(ChannelStatistics *)
         RelinquishMagickMemory(channel_statistics);
diff --git a/coders/aai.c b/coders/aai.c
index 5cf8dcb..3ae10a9 100644
--- a/coders/aai.c
+++ b/coders/aai.c
@@ -182,7 +182,7 @@
           *p=255;
         SetPixelAlpha(image,ScaleCharToQuantum(*p++),q);
         if (GetPixelAlpha(image,q) != OpaqueAlpha)
-          image->matte=MagickTrue;
+          image->alpha_trait=BlendPixelTrait;
         q+=GetPixelChannels(image);
       }
       if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -389,7 +389,7 @@
         *q++=ScaleQuantumToChar(GetPixelBlue(image,p));
         *q++=ScaleQuantumToChar(GetPixelGreen(image,p));
         *q++=ScaleQuantumToChar(GetPixelRed(image,p));
-        *q=ScaleQuantumToChar((Quantum) (image->matte != MagickFalse ?
+        *q=ScaleQuantumToChar((Quantum) (image->alpha_trait == BlendPixelTrait ?
           GetPixelAlpha(image,p) : OpaqueAlpha));
         if (*q == 255)
           *q=254;
diff --git a/coders/avs.c b/coders/avs.c
index 0cf6d42..1f4d4fc 100644
--- a/coders/avs.c
+++ b/coders/avs.c
@@ -141,7 +141,7 @@
   /*
     Read AVS X image.
   */
-  image->matte=MagickTrue;
+  image->alpha_trait=BlendPixelTrait;
   width=ReadBlobMSBLong(image);
   height=ReadBlobMSBLong(image);
   if (EOFBlob(image) != MagickFalse)
@@ -382,7 +382,7 @@
       q=pixels;
       for (x=0; x < (ssize_t) image->columns; x++)
       {
-        *q++=ScaleQuantumToChar((Quantum) (image->matte != MagickFalse ?
+        *q++=ScaleQuantumToChar((Quantum) (image->alpha_trait == BlendPixelTrait ?
           GetPixelAlpha(image,p) : OpaqueAlpha));
         *q++=ScaleQuantumToChar(GetPixelRed(image,p));
         *q++=ScaleQuantumToChar(GetPixelGreen(image,p));
diff --git a/coders/bgr.c b/coders/bgr.c
index 7c4cb84..a800ff2 100644
--- a/coders/bgr.c
+++ b/coders/bgr.c
@@ -168,7 +168,7 @@
   if (LocaleCompare(image_info->magick,"BGRA") == 0)
     {
       quantum_type=BGRAQuantum;
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
     }
   if (image_info->number_scenes != 0)
     while (image->scene < image_info->scene)
@@ -250,7 +250,7 @@
                 SetPixelGreen(image,GetPixelGreen(canvas_image,p),q);
                 SetPixelBlue(image,GetPixelBlue(canvas_image,p),q);
                 SetPixelAlpha(image,OpaqueAlpha,q);
-                if (image->matte != MagickFalse)
+                if (image->alpha_trait == BlendPixelTrait)
                   SetPixelAlpha(image,GetPixelAlpha(canvas_image,p),q);
                 p+=GetPixelChannels(canvas_image);
                 q+=GetPixelChannels(image);
@@ -305,7 +305,7 @@
                 "UnexpectedEndOfFile",image->filename);
               break;
             }
-          for (i=0; i < (ssize_t) (image->matte != MagickFalse ? 4 : 3); i++)
+          for (i=0; i < (ssize_t) (image->alpha_trait == BlendPixelTrait ? 4 : 3); i++)
           {
             quantum_type=quantum_types[i];
             q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
@@ -548,7 +548,7 @@
             if (status == MagickFalse)
               break;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             for (y=0; y < (ssize_t) image->extract_info.height; y++)
             {
@@ -832,7 +832,7 @@
             if (status == MagickFalse)
               break;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             (void) CloseBlob(image);
             AppendImageFormat("A",image->filename);
@@ -1097,7 +1097,7 @@
   if (LocaleCompare(image_info->magick,"BGRA") == 0)
     {
       quantum_type=BGRAQuantum;
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
     }
   scene=0;
   do
@@ -1108,7 +1108,7 @@
     if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse)
       (void) TransformImageColorspace(image,sRGBColorspace,exception);
     if ((LocaleCompare(image_info->magick,"BGRA") == 0) &&
-        (image->matte == MagickFalse))
+        (image->alpha_trait != BlendPixelTrait))
       (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
     quantum_info=AcquireQuantumInfo(image_info,image);
     if (quantum_info == (QuantumInfo *) NULL)
diff --git a/coders/bmp.c b/coders/bmp.c
index 4cc7eb6..a99115b 100644
--- a/coders/bmp.c
+++ b/coders/bmp.c
@@ -841,7 +841,7 @@
     image->rows=(size_t) MagickAbsoluteValue(bmp_info.height);
     image->depth=bmp_info.bits_per_pixel <= 8 ? bmp_info.bits_per_pixel : 8;
     if ((bmp_info.bits_per_pixel == 16) || (bmp_info.bits_per_pixel == 32))
-      image->matte=bmp_info.alpha_mask != 0 ? MagickTrue : MagickFalse;
+      image->alpha_trait=bmp_info.alpha_mask != 0 ? MagickTrue : MagickFalse;
     if ((bmp_info.number_colors != 0) || (bmp_info.bits_per_pixel < 16))
       {
         size_t
@@ -1171,7 +1171,7 @@
             SetPixelGreen(image,ScaleShortToQuantum((unsigned short) green),q);
             SetPixelBlue(image,ScaleShortToQuantum((unsigned short) blue),q);
             SetPixelAlpha(image,OpaqueAlpha,q);
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               SetPixelAlpha(image,
                 ScaleShortToQuantum((unsigned short) opacity),q);
             q+=GetPixelChannels(image);
@@ -1266,7 +1266,7 @@
             SetPixelGreen(image,ScaleShortToQuantum((unsigned short) green),q);
             SetPixelBlue(image,ScaleShortToQuantum((unsigned short) blue),q);
             SetPixelAlpha(image,OpaqueAlpha,q);
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               SetPixelAlpha(image,
                 ScaleShortToQuantum((unsigned short) opacity),q);
             q+=GetPixelChannels(image);
@@ -1550,7 +1550,7 @@
         if (image_info->compression == RLECompression)
           bmp_info.bits_per_pixel=8;
         bmp_info.number_colors=1U << bmp_info.bits_per_pixel;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           (void) SetImageStorageClass(image,DirectClass,exception);
         else
           if ((size_t) bmp_info.number_colors < image->colors)
@@ -1573,9 +1573,9 @@
         */
         bmp_info.number_colors=0;
         bmp_info.bits_per_pixel=(unsigned short)
-          ((type > 3) && (image->matte != MagickFalse) ? 32 : 24);
+          ((type > 3) && (image->alpha_trait == BlendPixelTrait) ? 32 : 24);
         bmp_info.compression=(unsigned int) ((type > 3) &&
-          (image->matte != MagickFalse) ?  BI_BITFIELDS : BI_RGB);
+          (image->alpha_trait == BlendPixelTrait) ?  BI_BITFIELDS : BI_RGB);
       }
     bytes_per_line=4*((image->columns*bmp_info.bits_per_pixel+31)/32);
     bmp_info.ba_offset=0;
@@ -1586,7 +1586,7 @@
     if (type == 2)
       bmp_info.size=12;
     else
-      if ((type == 3) || ((image->matte == MagickFalse) &&
+      if ((type == 3) || ((image->alpha_trait != BlendPixelTrait) &&
           (have_color_info == MagickFalse)))
         {
           type=3;
@@ -1872,7 +1872,7 @@
             "   Storage class=PseudoClass");
         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
           "   Image depth=%.20g",(double) image->depth);
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
             "   Matte=True");
         else
@@ -1946,7 +1946,7 @@
         (void) WriteBlobLSBLong(image,bmp_info.number_colors);
         (void) WriteBlobLSBLong(image,bmp_info.colors_important);
       }
-    if ((type > 3) && ((image->matte != MagickFalse) ||
+    if ((type > 3) && ((image->alpha_trait == BlendPixelTrait) ||
         (have_color_info != MagickFalse)))
       {
         /*
diff --git a/coders/cmyk.c b/coders/cmyk.c
index f93498a..a4609af 100644
--- a/coders/cmyk.c
+++ b/coders/cmyk.c
@@ -168,7 +168,7 @@
   if (LocaleCompare(image_info->magick,"CMYKA") == 0)
     {
       quantum_type=CMYKAQuantum;
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
     }
   if (image_info->number_scenes != 0)
     while (image->scene < image_info->scene)
@@ -252,7 +252,7 @@
                 SetPixelBlue(image,GetPixelBlue(canvas_image,p),q);
                 SetPixelBlack(image,GetPixelBlack(canvas_image,p),q);
                 SetPixelAlpha(image,OpaqueAlpha,q);
-                if (image->matte != MagickFalse)
+                if (image->alpha_trait == BlendPixelTrait)
                   SetPixelAlpha(image,GetPixelAlpha(canvas_image,p),q);
                 p+=GetPixelChannels(canvas_image);
                 q+=GetPixelChannels(image);
@@ -308,7 +308,7 @@
                 "UnexpectedEndOfFile",image->filename);
               break;
             }
-          for (i=0; i < (image->matte != MagickFalse ? 5 : 4); i++)
+          for (i=0; i < (image->alpha_trait == BlendPixelTrait ? 5 : 4); i++)
           {
             quantum_type=quantum_types[i];
             q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
@@ -597,7 +597,7 @@
             if (status == MagickFalse)
               break;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             for (y=0; y < (ssize_t) image->extract_info.height; y++)
             {
@@ -952,7 +952,7 @@
             if (status == MagickFalse)
               break;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             (void) CloseBlob(image);
             AppendImageFormat("A",image->filename);
@@ -1224,7 +1224,7 @@
     if (LocaleCompare(image_info->magick,"CMYKA") == 0)
       {
         quantum_type=CMYKAQuantum;
-        if (image->matte == MagickFalse)
+        if (image->alpha_trait != BlendPixelTrait)
           (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       }
     quantum_info=AcquireQuantumInfo(image_info,image);
diff --git a/coders/dds.c b/coders/dds.c
index 51217d7..5039245 100644
--- a/coders/dds.c
+++ b/coders/dds.c
@@ -379,7 +379,7 @@
         image=SyncNextImageInList(image);
       }
     
-    image->matte = matte;
+    image->alpha_trait = matte;
     image->compression = compression;
     image->columns = dds_info.width;
     image->rows = dds_info.height;
@@ -549,8 +549,8 @@
               SetPixelGreen(image,ScaleCharToQuantum(colors.g[code]),q);
               SetPixelBlue(image,ScaleCharToQuantum(colors.b[code]),q);
               SetPixelAlpha(image,ScaleCharToQuantum(colors.a[code]),q);
-              if (colors.a[code] && (image->matte == MagickFalse))
-                image->matte=MagickTrue;  /* Correct matte */
+              if (colors.a[code] && (image->alpha_trait != BlendPixelTrait))
+                image->alpha_trait=BlendPixelTrait;  /* Correct matte */
               q+=GetPixelChannels(image);
             }
         }
diff --git a/coders/debug.c b/coders/debug.c
index d8be337..e5ca24e 100644
--- a/coders/debug.c
+++ b/coders/debug.c
@@ -208,7 +208,7 @@
       MagickColorspaceOptions,(ssize_t) image->colorspace),MaxTextExtent);
     LocaleLower(colorspace);
     image->depth=GetImageQuantumDepth(image,MagickTrue);
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       (void) ConcatenateMagickString(colorspace,"a",MaxTextExtent);
     (void) FormatLocaleString(buffer,MaxTextExtent,
       "# ImageMagick pixel debugging: %.20g,%.20g,%.20g,%s\n",(double)
@@ -238,7 +238,7 @@
               (double) pixel.black);
             (void) ConcatenateMagickString(tuple,black,MaxTextExtent);
           }
-        if (pixel.matte != MagickFalse)
+        if (pixel.alpha_trait == BlendPixelTrait)
           {
             char
               alpha[MaxTextExtent];
diff --git a/coders/dib.c b/coders/dib.c
index 3214830..0872aae 100644
--- a/coders/dib.c
+++ b/coders/dib.c
@@ -535,7 +535,7 @@
       dib_info.green_mask=ReadBlobLSBLong(image);
       dib_info.blue_mask=ReadBlobLSBLong(image);
     }
-  image->matte=dib_info.bits_per_pixel == 32 ? MagickTrue : MagickFalse;
+  image->alpha_trait=dib_info.bits_per_pixel == 32 ? MagickTrue : MagickFalse;
   image->columns=(size_t) MagickAbsoluteValue(dib_info.width);
   image->rows=(size_t) MagickAbsoluteValue(dib_info.height);
   image->depth=8;
@@ -828,7 +828,7 @@
           SetPixelBlue(image,ScaleCharToQuantum(*p++),q);
           SetPixelGreen(image,ScaleCharToQuantum(*p++),q);
           SetPixelRed(image,ScaleCharToQuantum(*p++),q);
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             SetPixelAlpha(image,ScaleCharToQuantum(*p++),q);
           q+=GetPixelChannels(image);
         }
@@ -1018,7 +1018,7 @@
         Full color DIB raster.
       */
       dib_info.number_colors=0;
-      dib_info.bits_per_pixel=(unsigned short) (image->matte ? 32 : 24);
+      dib_info.bits_per_pixel=(unsigned short) (image->alpha_trait ? 32 : 24);
     }
   else
     {
@@ -1189,7 +1189,7 @@
           *q++=ScaleQuantumToChar(GetPixelBlue(image,p));
           *q++=ScaleQuantumToChar(GetPixelGreen(image,p));
           *q++=ScaleQuantumToChar(GetPixelRed(image,p));
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             *q++=ScaleQuantumToChar(GetPixelAlpha(image,p));
           p+=GetPixelChannels(image);
         }
diff --git a/coders/djvu.c b/coders/djvu.c
index 5abe9c6..5074b0d 100644
--- a/coders/djvu.c
+++ b/coders/djvu.c
@@ -662,7 +662,7 @@
                 /* fixme:  MAGICKCORE_QUANTUM_DEPTH ?*/
                 image->depth =  8UL;    /* i only support that? */
 
-                image->matte = MagickTrue;
+                image->alpha_trait = MagickTrue;
                 /* is this useful? */
         }
 #if DEBUG
diff --git a/coders/dps.c b/coders/dps.c
index 1498ed8..f4f529c 100644
--- a/coders/dps.c
+++ b/coders/dps.c
@@ -490,7 +490,7 @@
           if (matte_image != (XImage *) NULL)
             {
               image->storage_class=DirectClass;
-              image->matte=MagickTrue;
+              image->alpha_trait=BlendPixelTrait;
               for (y=0; y < (ssize_t) image->rows; y++)
               {
                 q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
diff --git a/coders/dpx.c b/coders/dpx.c
index 3b3b2ef..7ce0381 100644
--- a/coders/dpx.c
+++ b/coders/dpx.c
@@ -1033,7 +1033,7 @@
     case ABGRComponentType:
     case RGBAComponentType:
     {
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
       samples_per_pixel=4;
       quantum_type=RGBAQuantum;
       break;
@@ -1468,17 +1468,17 @@
         case YCbCrColorspace:
         {
           dpx.image.image_element[i].descriptor=CbYCr444ComponentType;
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             dpx.image.image_element[i].descriptor=CbYCrA4444ComponentType;
           break;
         }
         default:
         {
           dpx.image.image_element[i].descriptor=RGBComponentType;
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             dpx.image.image_element[i].descriptor=RGBAComponentType;
           if ((image_info->type != TrueColorType) &&
-              (image->matte == MagickFalse) &&
+              (image->alpha_trait != BlendPixelTrait) &&
               (IsImageGray(image,exception) != MagickFalse))
             dpx.image.image_element[i].descriptor=LumaComponentType;
           break;
@@ -1799,19 +1799,19 @@
   SetQuantumPack(quantum_info,dpx.image.image_element[0].packing == 0 ?
     MagickTrue : MagickFalse);
   quantum_type=RGBQuantum;
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     quantum_type=RGBAQuantum;
   if (image->colorspace == YCbCrColorspace)
     {
       quantum_type=CbYCrQuantum;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         quantum_type=CbYCrAQuantum;
       if ((horizontal_factor == 2) || (vertical_factor == 2))
         quantum_type=CbYCrYQuantum;
     }
-  extent=GetBytesPerRow(image->columns,image->matte != MagickFalse ? 4UL : 3UL,
+  extent=GetBytesPerRow(image->columns,image->alpha_trait == BlendPixelTrait ? 4UL : 3UL,
     image->depth,MagickTrue);
-  if ((image_info->type != TrueColorType) && (image->matte == MagickFalse) &&
+  if ((image_info->type != TrueColorType) && (image->alpha_trait != BlendPixelTrait) &&
       (IsImageGray(image,exception) != MagickFalse))
     {
       quantum_type=GrayQuantum;
diff --git a/coders/exr.c b/coders/exr.c
index 1d72f67..fa89ca8 100644
--- a/coders/exr.c
+++ b/coders/exr.c
@@ -199,7 +199,7 @@
   ImfHeaderDisplayWindow(hdr_info,&min_x,&min_y,&max_x,&max_y);
   image->columns=max_x-min_x+1UL;
   image->rows=max_y-min_y+1UL;
-  image->matte=MagickTrue;
+  image->alpha_trait=BlendPixelTrait;
   SetImageColorspace(image,RGBColorspace,exception);
   image->gamma=1.0;
   if (image_info->ping != MagickFalse)
@@ -447,7 +447,7 @@
       scanline[x].g=half_quantum;
       ImfFloatToHalf(QuantumScale*GetPixelBlue(image,p),&half_quantum);
       scanline[x].b=half_quantum;
-      if (image->matte == MagickFalse)
+      if (image->alpha_trait != BlendPixelTrait)
         ImfFloatToHalf(1.0,&half_quantum);
       else
         ImfFloatToHalf(QuantumScale*GetPixelAlpha(image,p),&half_quantum);
diff --git a/coders/fpx.c b/coders/fpx.c
index 643585e..e1a775a 100644
--- a/coders/fpx.c
+++ b/coders/fpx.c
@@ -366,7 +366,7 @@
   image->columns=width;
   image->rows=height;
   if ((colorspace.numberOfComponents % 2) == 0)
-    image->matte=MagickTrue;
+    image->alpha_trait=BlendPixelTrait;
   if (colorspace.numberOfComponents == 1)
     {
       /*
@@ -473,7 +473,7 @@
           SetPixelBlue(image,index,q);
         }
       SetPixelAlpha(image,OpaqueAlpha,q);
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         SetPixelAlpha(image,ScaleCharToQuantum(*a),q);
       q+=GetPixelChannels(image);
       r+=red_component->columnStride;
@@ -867,7 +867,7 @@
   tile_width=64;
   tile_height=64;
   colorspace.numberOfComponents=3;
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     colorspace.numberOfComponents=4;
   if ((image_info->type != TrueColorType) &&
       (IsImageGray(image,exception) != MagickFalse))
@@ -987,7 +987,7 @@
     Write image pixelss.
   */
   quantum_type=RGBQuantum;
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     quantum_type=RGBAQuantum;
   if (fpx_info.numberOfComponents == 1)
     quantum_type=GrayQuantum;
diff --git a/coders/gif.c b/coders/gif.c
index f830ed8..0ba987f 100644
--- a/coders/gif.c
+++ b/coders/gif.c
@@ -1253,7 +1253,7 @@
     image->ticks_per_second=100;
     image->dispose=(DisposeType) dispose;
     image->iterations=iterations;
-    image->matte=opacity >= 0 ? MagickTrue : MagickFalse;
+    image->alpha_trait=opacity >= 0 ? MagickTrue : MagickFalse;
     delay=0;
     dispose=0;
     iterations=1;
diff --git a/coders/gradient.c b/coders/gradient.c
index d1330fb..3104ae6 100644
--- a/coders/gradient.c
+++ b/coders/gradient.c
@@ -158,7 +158,7 @@
       image=DestroyImageList(image);
       return((Image *) NULL);
     }
-  if ((start_color.matte == MagickFalse) && (stop_color.matte == MagickFalse))
+  if ((start_color.alpha_trait != BlendPixelTrait) && (stop_color.alpha_trait != BlendPixelTrait))
     (void) SetImageAlphaChannel(image,DeactivateAlphaChannel,exception);
   return(GetFirstImageInList(image));
 }
diff --git a/coders/icon.c b/coders/icon.c
index 744cc74..2914a7a 100644
--- a/coders/icon.c
+++ b/coders/icon.c
@@ -314,7 +314,7 @@
         icon_info.y_pixels=ReadBlobLSBLong(image);
         icon_info.number_colors=ReadBlobLSBLong(image);
         icon_info.colors_important=ReadBlobLSBLong(image);
-        image->matte=MagickTrue;
+        image->alpha_trait=BlendPixelTrait;
         image->columns=(size_t) icon_file.directory[i].width;
         if ((ssize_t) image->columns > icon_info.width)
           image->columns=(size_t) icon_info.width;
@@ -1134,7 +1134,7 @@
                 *q++=ScaleQuantumToChar(GetPixelBlue(next,p));
                 *q++=ScaleQuantumToChar(GetPixelGreen(next,p));
                 *q++=ScaleQuantumToChar(GetPixelRed(next,p));
-                if (next->matte == MagickFalse)
+                if (next->alpha_trait != BlendPixelTrait)
                   *q++=ScaleQuantumToChar(QuantumRange);
                 else
                   *q++=ScaleQuantumToChar(GetPixelAlpha(next,p));
@@ -1224,7 +1224,7 @@
           for (x=0; x < (ssize_t) next->columns; x++)
           {
             byte<<=1;
-            if ((next->matte == MagickTrue) &&
+            if ((next->alpha_trait == BlendPixelTrait) &&
                 (GetPixelAlpha(next,p) == (Quantum) TransparentAlpha))
               byte|=0x01;
             bit++;
diff --git a/coders/jp2.c b/coders/jp2.c
index 86f5666..d9c3008 100644
--- a/coders/jp2.c
+++ b/coders/jp2.c
@@ -423,7 +423,7 @@
       components[3]=jas_image_getcmptbytype(jp2_image,3);
       if (components[3] > 0)
         {
-          image->matte=MagickTrue;
+          image->alpha_trait=BlendPixelTrait;
           number_components++;
         }
       break;
@@ -457,7 +457,7 @@
       components[3]=jas_image_getcmptbytype(jp2_image,JAS_IMAGE_CT_UNKNOWN);
       if (components[3] > 0)
         {
-          image->matte=MagickTrue;
+          image->alpha_trait=BlendPixelTrait;
           number_components++;
         }
       break;
@@ -478,7 +478,7 @@
       components[3]=jas_image_getcmptbytype(jp2_image,JAS_IMAGE_CT_UNKNOWN);
       if (components[3] > 0)
         {
-          image->matte=MagickTrue;
+          image->alpha_trait=BlendPixelTrait;
           number_components++;
         }
       break;
@@ -499,7 +499,7 @@
       components[3]=jas_image_getcmptbytype(jp2_image,JAS_IMAGE_CT_UNKNOWN);
       if (components[3] > 0)
         {
-          image->matte=MagickTrue;
+          image->alpha_trait=BlendPixelTrait;
           number_components++;
         }
       break;
@@ -536,7 +536,7 @@
   /*
     Convert JPEG 2000 pixels.
   */
-  image->matte=number_components > 3 ? MagickTrue : MagickFalse;
+  image->alpha_trait=number_components > 3 ? MagickTrue : MagickFalse;
   maximum_component_depth=0;
   for (i=0; i < (ssize_t) number_components; i++)
   {
@@ -916,7 +916,7 @@
   jp2_stream=JP2StreamManager(image);
   if (jp2_stream == (jas_stream_t *) NULL)
     ThrowWriterException(DelegateError,"UnableToManageJP2Stream");
-  number_components=image->matte ? 4UL : 3UL;
+  number_components=image->alpha_trait ? 4UL : 3UL;
   if (IsGrayColorspace(image->colorspace) != MagickFalse)
     number_components=1;
   if ((image->columns != (unsigned int) image->columns) ||
diff --git a/coders/matte.c b/coders/matte.c
index a666d92..b8b6f86 100644
--- a/coders/matte.c
+++ b/coders/matte.c
@@ -175,13 +175,13 @@
   ssize_t
     y;
 
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     ThrowWriterException(CoderError,"ImageDoesNotHaveAAlphaChannel");
   matte_image=CloneImage(image,image->columns,image->rows,MagickTrue,exception);
   if (matte_image == (Image *) NULL)
     return(MagickFalse);
   (void) SetImageType(matte_image,TrueColorMatteType,exception);
-  matte_image->matte=MagickFalse;
+  matte_image->alpha_trait=UndefinedPixelTrait;
   /*
     Convert image to matte pixels.
   */
diff --git a/coders/miff.c b/coders/miff.c
index 30b4b4d..445fd11 100644
--- a/coders/miff.c
+++ b/coders/miff.c
@@ -242,7 +242,7 @@
           unsigned char
             quantum;
 
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             {
               p=PushCharPixel(p,&quantum);
               pixel->alpha=ScaleCharToQuantum(quantum);
@@ -254,7 +254,7 @@
           unsigned short
             quantum;
 
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             {
               p=PushShortPixel(MSBEndian,p,&quantum);
               pixel->alpha=(Quantum) (quantum >> (image->depth-
@@ -267,7 +267,7 @@
           unsigned int
             quantum;
 
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             {
               p=PushLongPixel(MSBEndian,p,&quantum);
               pixel->alpha=(Quantum) (quantum >> (image->depth-
@@ -305,7 +305,7 @@
           p=PushCharPixel(p,&quantum);
           pixel->black=ScaleCharToQuantum(quantum);
         }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           p=PushCharPixel(p,&quantum);
           pixel->alpha=ScaleCharToQuantum(quantum);
@@ -333,7 +333,7 @@
           p=PushShortPixel(MSBEndian,p,&quantum);
           pixel->black=quantum >> (image->depth-MAGICKCORE_QUANTUM_DEPTH);
         }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           p=PushShortPixel(MSBEndian,p,&quantum);
           pixel->alpha=quantum >> (image->depth-MAGICKCORE_QUANTUM_DEPTH);
@@ -361,7 +361,7 @@
           p=PushLongPixel(MSBEndian,p,&quantum);
           pixel->black=quantum >> (image->depth-MAGICKCORE_QUANTUM_DEPTH);
         }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           p=PushLongPixel(MSBEndian,p,&quantum);
           pixel->alpha=quantum >> (image->depth-MAGICKCORE_QUANTUM_DEPTH);
@@ -621,8 +621,7 @@
                   if (*options != '{')
                     if (isspace((int) ((unsigned char) c)) != 0)
                       break;
-                }
-              }
+                } }
             *p='\0';
             if (*options == '{')
               (void) strcpy(options,options+1);
@@ -631,6 +630,24 @@
             */
             switch (*keyword)
             {
+              case 'a':
+              case 'A':
+              {
+                if (LocaleCompare(keyword,"alpha-trait") == 0)
+                  {
+                    ssize_t
+                      alpha_trait;
+
+                    alpha_trait=ParseCommandOption(MagickPixelTraitOptions,
+                      MagickFalse,options);
+                    if (alpha_trait < 0)
+                      break;
+                    image->alpha_trait=(PixelTrait) alpha_trait;
+                    break;
+                  }
+                (void) SetImageProperty(image,keyword,options,exception);
+                break;
+              }
               case 'b':
               case 'B':
               {
@@ -818,7 +835,8 @@
                       options);
                     if (matte < 0)
                       break;
-                    image->matte=(MagickBooleanType) matte;
+                    image->alpha_trait=matte == 0 ? UndefinedPixelTrait :
+                      BlendPixelTrait;
                     break;
                   }
                 if (LocaleCompare(keyword,"matte-color") == 0)
@@ -838,18 +856,6 @@
               case 'o':
               case 'O':
               {
-                if (LocaleCompare(keyword,"opaque") == 0)
-                  {
-                    ssize_t
-                      matte;
-
-                    matte=ParseCommandOption(MagickBooleanOptions,MagickFalse,
-                      options);
-                    if (matte < 0)
-                      break;
-                    image->matte=(MagickBooleanType) matte;
-                    break;
-                  }
                 if (LocaleCompare(keyword,"orientation") == 0)
                   {
                     ssize_t
@@ -1239,7 +1245,7 @@
       packet_size=(size_t) (3*quantum_info->depth/8);
     if (IsGrayColorspace(image->colorspace) != MagickFalse)
       packet_size=quantum_info->depth/8;
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       packet_size+=quantum_info->depth/8;
     if (image->colorspace == CMYKColorspace)
       packet_size+=quantum_info->depth/8;
@@ -1257,24 +1263,24 @@
       Read image pixels.
     */
     quantum_type=RGBQuantum;
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       quantum_type=RGBAQuantum;
     if (image->colorspace == CMYKColorspace)
       {
         quantum_type=CMYKQuantum;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           quantum_type=CMYKAQuantum;
       }
     if (IsGrayColorspace(image->colorspace) != MagickFalse)
       {
         quantum_type=GrayQuantum;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           quantum_type=GrayAlphaQuantum;
       }
     if (image->storage_class == PseudoClass)
       {
         quantum_type=IndexQuantum;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           quantum_type=IndexAlphaQuantum;
       }
     status=MagickTrue;
@@ -1456,7 +1462,7 @@
                 if (image->colorspace == CMYKColorspace)
                   SetPixelBlack(image,ClampToQuantum(pixel.black),q);
               }
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               SetPixelAlpha(image,ClampToQuantum(pixel.alpha),q);
             q+=GetPixelChannels(image);
           }
@@ -1722,7 +1728,7 @@
           unsigned int
             value;
 
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             {
               value=ScaleQuantumToLong(ClampToQuantum(pixel->alpha));
               pixels=PopLongPixel(MSBEndian,value,pixels);
@@ -1734,7 +1740,7 @@
           unsigned short
             value;
 
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             {
               value=ScaleQuantumToShort(ClampToQuantum(pixel->alpha));
               pixels=PopShortPixel(MSBEndian,value,pixels);
@@ -1746,7 +1752,7 @@
           unsigned char
             value;
 
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             {
               value=(unsigned char) ScaleQuantumToChar(ClampToQuantum(
                 pixel->alpha));
@@ -1782,7 +1788,7 @@
           value=ScaleQuantumToLong(ClampToQuantum(pixel->black));
           pixels=PopLongPixel(MSBEndian,value,pixels);
         }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           value=ScaleQuantumToLong(ClampToQuantum(pixel->alpha));
           pixels=PopLongPixel(MSBEndian,value,pixels);
@@ -1808,7 +1814,7 @@
           value=ScaleQuantumToShort(ClampToQuantum(pixel->black));
           pixels=PopShortPixel(MSBEndian,value,pixels);
         }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           value=ScaleQuantumToShort(ClampToQuantum(pixel->alpha));
           pixels=PopShortPixel(MSBEndian,value,pixels);
@@ -1836,7 +1842,7 @@
             pixel->black));
           pixels=PopCharPixel(value,pixels);
         }
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           value=(unsigned char) ScaleQuantumToChar(ClampToQuantum(
             pixel->alpha));
@@ -1983,7 +1989,7 @@
       packet_size=(size_t) (3*quantum_info->depth/8);
     if (IsGrayColorspace(image->colorspace) != MagickFalse)
       packet_size=(size_t) (quantum_info->depth/8);
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       packet_size+=quantum_info->depth/8;
     if (image->colorspace == CMYKColorspace)
       packet_size+=quantum_info->depth/8;
@@ -2004,9 +2010,10 @@
     */
     (void) WriteBlobString(image,"id=ImageMagick  version=1.0\n");
     (void) FormatLocaleString(buffer,MaxTextExtent,
-      "class=%s  colors=%.20g  matte=%s\n",CommandOptionToMnemonic(
+      "class=%s  colors=%.20g  alpha-trait=%s\n",CommandOptionToMnemonic(
       MagickClassOptions,image->storage_class),(double) image->colors,
-      CommandOptionToMnemonic(MagickBooleanOptions,(ssize_t) image->matte));
+      CommandOptionToMnemonic(MagickPixelTraitOptions,(ssize_t)
+      image->alpha_trait));
     (void) WriteBlobString(image,buffer);
     (void) FormatLocaleString(buffer,MaxTextExtent,"columns=%.20g  rows=%.20g  "
       "depth=%.20g\n",(double) image->columns,(double) image->rows,(double)
diff --git a/coders/mpc.c b/coders/mpc.c
index 429ce79..4ad636d 100644
--- a/coders/mpc.c
+++ b/coders/mpc.c
@@ -331,6 +331,24 @@
             */
             switch (*keyword)
             {
+              case 'a':
+              case 'A':
+              {
+                if (LocaleCompare(keyword,"alpha-trait") == 0)
+                  {
+                    ssize_t
+                      alpha_trait;
+
+                    alpha_trait=ParseCommandOption(MagickPixelTraitOptions,
+                      MagickFalse,options);
+                    if (alpha_trait < 0)
+                      break;
+                    image->alpha_trait=(PixelTrait) alpha_trait;
+                    break;
+                  }
+                (void) SetImageProperty(image,keyword,options,exception);
+                break;
+              }
               case 'b':
               case 'B':
               {
@@ -503,18 +521,6 @@
               case 'm':
               case 'M':
               {
-                if (LocaleCompare(keyword,"matte") == 0)
-                  {
-                    ssize_t
-                      matte;
-
-                    matte=ParseCommandOption(MagickBooleanOptions,MagickFalse,
-                      options);
-                    if (matte < 0)
-                      break;
-                    image->matte=(MagickBooleanType) matte;
-                    break;
-                  }
                 if (LocaleCompare(keyword,"matte-color") == 0)
                   {
                     (void) QueryColorCompliance(options,AllCompliance,
@@ -544,18 +550,6 @@
               case 'o':
               case 'O':
               {
-                if (LocaleCompare(keyword,"opaque") == 0)
-                  {
-                    ssize_t
-                      matte;
-
-                    matte=ParseCommandOption(MagickBooleanOptions,MagickFalse,
-                      options);
-                    if (matte < 0)
-                      break;
-                    image->matte=(MagickBooleanType) matte;
-                    break;
-                  }
                 if (LocaleCompare(keyword,"orientation") == 0)
                   {
                     ssize_t
@@ -1101,9 +1095,10 @@
       MAGICKCORE_QUANTUM_DEPTH);
     (void) WriteBlobString(image,buffer);
     (void) FormatLocaleString(buffer,MaxTextExtent,
-      "class=%s  colors=%.20g  matte=%s\n",CommandOptionToMnemonic(
+      "class=%s  colors=%.20g  alpha-trait=%s\n",CommandOptionToMnemonic(
       MagickClassOptions,image->storage_class),(double) image->colors,
-      CommandOptionToMnemonic(MagickBooleanOptions,(ssize_t) image->matte));
+      CommandOptionToMnemonic(MagickPixelTraitOptions,(ssize_t)
+      image->alpha_trait));
     (void) WriteBlobString(image,buffer);
     (void) FormatLocaleString(buffer,MaxTextExtent,
       "columns=%.20g  rows=%.20g depth=%.20g\n",(double) image->columns,
diff --git a/coders/msl.c b/coders/msl.c
index af33f89..ba3b828 100644
--- a/coders/msl.c
+++ b/coders/msl.c
@@ -1952,7 +1952,7 @@
                         }
                       (void) SetImageArtifact(msl_info->image[n],
                                             "compose:args",value);
-                      if (composite_image->matte != MagickTrue)
+                      if (composite_image->alpha_trait == UndefinedPixelTrait)
                         (void) SetImageAlpha(composite_image,OpaqueAlpha,
                           &exception);
                       composite_view=AcquireAuthenticCacheView(composite_image,
diff --git a/coders/null.c b/coders/null.c
index 454cf68..5770b9c 100644
--- a/coders/null.c
+++ b/coders/null.c
@@ -126,7 +126,7 @@
     image->columns=1;
   if (image->rows == 0)
     image->rows=1;
-  image->matte=MagickTrue;
+  image->alpha_trait=BlendPixelTrait;
   GetPixelInfo(image,&background);
   background.alpha=(double) TransparentAlpha;
   if (image->colorspace == CMYKColorspace)
diff --git a/coders/pcx.c b/coders/pcx.c
index c93fa6c..38c107b 100644
--- a/coders/pcx.c
+++ b/coders/pcx.c
@@ -431,7 +431,7 @@
         }
       }
     if (image->storage_class == DirectClass)
-      image->matte=pcx_info.planes > 3 ? MagickTrue : MagickFalse;
+      image->alpha_trait=pcx_info.planes > 3 ? MagickTrue : MagickFalse;
     else
       if ((pcx_info.version == 5) ||
           ((pcx_info.bits_per_pixel*pcx_info.planes) == 1))
@@ -607,7 +607,7 @@
             SetPixelRed(image,ScaleCharToQuantum(*r++),q);
             SetPixelGreen(image,ScaleCharToQuantum(*r++),q);
             SetPixelBlue(image,ScaleCharToQuantum(*r++),q);
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               SetPixelAlpha(image,ScaleCharToQuantum(*r++),q);
           }
         q+=GetPixelChannels(image);
@@ -940,7 +940,7 @@
     if ((image->storage_class == DirectClass) || (image->colors > 256))
       {
         pcx_info.planes=3;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           pcx_info.planes++;
       }
     pcx_info.bytes_per_line=(unsigned short) (((size_t) image->columns*
diff --git a/coders/pdf.c b/coders/pdf.c
index 3055eaf..db9d06c 100644
--- a/coders/pdf.c
+++ b/coders/pdf.c
@@ -1089,7 +1089,7 @@
   if (image_info->compression == JPEG2000Compression)
     version=(size_t) MagickMax(version,5);
   for (next=image; next != (Image *) NULL; next=GetNextImageInList(next))
-    if (next->matte != MagickFalse)
+    if (next->alpha_trait == BlendPixelTrait)
       version=(size_t) MagickMax(version,4);
   if (LocaleCompare(image_info->magick,"PDFA") == 0)
     version=(size_t) MagickMax(version,6);
@@ -1218,7 +1218,7 @@
       case Group4Compression:
       {
         if ((IsImageMonochrome(image,exception) == MagickFalse) ||
-            (image->matte != MagickFalse))
+            (image->alpha_trait == BlendPixelTrait))
           compression=RLECompression;
         break;
       }
@@ -1554,7 +1554,7 @@
       (compression == FaxCompression) || (compression == Group4Compression) ?
       1 : 8);
     (void) WriteBlobString(image,buffer);
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       {
         (void) FormatLocaleString(buffer,MaxTextExtent,"/SMask %.20g 0 R\n",
           (double) object+7);
@@ -2393,7 +2393,7 @@
       object);
     (void) WriteBlobString(image,buffer);
     (void) WriteBlobString(image,"<<\n");
-    if (image->matte == MagickFalse)
+    if (image->alpha_trait != BlendPixelTrait)
       (void) WriteBlobString(image,">>\n");
     else
       {
diff --git a/coders/pict.c b/coders/pict.c
index 09ba705..8b3e77a 100644
--- a/coders/pict.c
+++ b/coders/pict.c
@@ -470,7 +470,7 @@
     }
   else
     if (bits_per_pixel == 32)
-      width*=image->matte ? 4 : 3;
+      width*=image->alpha_trait ? 4 : 3;
   if (bytes_per_line == 0)
     bytes_per_line=width;
   row_bytes=(size_t) (image->columns | 0x8000);
@@ -1075,13 +1075,13 @@
               {
                 ReadPixmap(pixmap);
                 tile_image->depth=1UL*pixmap.component_size;
-                tile_image->matte=pixmap.component_count == 4 ?
+                tile_image->alpha_trait=pixmap.component_count == 4 ?
                   MagickTrue : MagickFalse;
                 tile_image->resolution.x=(double) pixmap.horizontal_resolution;
                 tile_image->resolution.y=(double) pixmap.vertical_resolution;
                 tile_image->units=PixelsPerInchResolution;
-                if (tile_image->matte != MagickFalse)
-                  image->matte=tile_image->matte;
+                if (tile_image->alpha_trait == BlendPixelTrait)
+                  image->alpha_trait=tile_image->alpha_trait;
               }
             if ((code != 0x9a) && (code != 0x9b))
               {
@@ -1196,7 +1196,7 @@
                           (unsigned char) ((j & 0x1f) << 3)),q);
                       }
                     else
-                      if (tile_image->matte == MagickFalse)
+                      if (tile_image->alpha_trait != BlendPixelTrait)
                         {
                           if (p > (pixels+extent+2*image->columns))
                             ThrowReaderException(CorruptImageError,
@@ -1640,9 +1640,9 @@
   storage_class=image->storage_class;
   if (image_info->compression == JPEGCompression)
     storage_class=DirectClass;
-  if ((storage_class == DirectClass) || (image->matte != MagickFalse))
+  if ((storage_class == DirectClass) || (image->alpha_trait == BlendPixelTrait))
     {
-      pixmap.component_count=image->matte ? 4 : 3;
+      pixmap.component_count=image->alpha_trait ? 4 : 3;
       pixmap.pixel_type=16;
       pixmap.bits_per_pixel=32;
       pixmap.pack_type=0x04;
@@ -1653,8 +1653,8 @@
     Allocate memory.
   */
   bytes_per_line=image->columns;
-  if ((storage_class == DirectClass) || (image->matte != MagickFalse))
-    bytes_per_line*=image->matte ? 4 : 3;
+  if ((storage_class == DirectClass) || (image->alpha_trait == BlendPixelTrait))
+    bytes_per_line*=image->alpha_trait ? 4 : 3;
   buffer=(unsigned char *) AcquireQuantumMemory(PictInfoSize,sizeof(*buffer));
   packed_scanline=(unsigned char *) AcquireQuantumMemory((size_t)
    (row_bytes+MaxCount),sizeof(*packed_scanline));
@@ -1877,7 +1877,7 @@
     Write picture data.
   */
   count=0;
-  if ((storage_class == PseudoClass) && (image->matte == MagickFalse))
+  if ((storage_class == PseudoClass) && (image->alpha_trait != BlendPixelTrait))
     for (y=0; y < (ssize_t) image->rows; y++)
     {
       p=GetVirtualPixels(image,0,y,image->columns,1,exception);
@@ -1926,7 +1926,7 @@
           red=scanline;
           green=scanline+image->columns;
           blue=scanline+2*image->columns;
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             {
               opacity=scanline;
               red=scanline+image->columns;
@@ -1938,7 +1938,7 @@
             *red++=ScaleQuantumToChar(GetPixelRed(image,p));
             *green++=ScaleQuantumToChar(GetPixelGreen(image,p));
             *blue++=ScaleQuantumToChar(GetPixelBlue(image,p));
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               *opacity++=ScaleQuantumToChar((Quantum) (GetPixelAlpha(image,p)));
             p+=GetPixelChannels(image);
           }
diff --git a/coders/png.c b/coders/png.c
index 28b4c59..2fb2231 100644
--- a/coders/png.c
+++ b/coders/png.c
@@ -2143,7 +2143,7 @@
   if (logging != MagickFalse)
   {
     (void)LogMagickEvent(CoderEvent,GetMagickModule(),
-      "  image->matte=%d",(int) image->matte);
+      "  image->alpha_trait=%d",(int) image->alpha_trait);
 
     (void)LogMagickEvent(CoderEvent,GetMagickModule(),
       "  image->rendering_intent=%d",(int) image->rendering_intent);
@@ -2723,7 +2723,7 @@
               "    Ignoring PNG tRNS chunk with out-of-range sample.");
           png_free_data(ping, ping_info, PNG_FREE_TRNS, 0);
           png_set_invalid(ping,ping_info,PNG_INFO_tRNS);
-          image->matte=MagickFalse;
+          image->alpha_trait=UndefinedPixelTrait;
         }
       else
         {
@@ -3012,7 +3012,7 @@
 
         depth=(ssize_t) ping_bit_depth;
 #endif
-        image->matte=(((int) ping_color_type == PNG_COLOR_TYPE_RGB_ALPHA) ||
+        image->alpha_trait=(((int) ping_color_type == PNG_COLOR_TYPE_RGB_ALPHA) ||
             ((int) ping_color_type == PNG_COLOR_TYPE_GRAY_ALPHA) ||
             (png_get_valid(ping,ping_info,PNG_INFO_tRNS))) ?
             MagickTrue : MagickFalse;
@@ -3128,11 +3128,11 @@
         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
           "    Converting grayscale pixels to pixel packets");
 
-      image->matte=ping_color_type == PNG_COLOR_TYPE_GRAY_ALPHA ?
+      image->alpha_trait=ping_color_type == PNG_COLOR_TYPE_GRAY_ALPHA ?
         MagickTrue : MagickFalse;
 
       quantum_scanline=(Quantum *) AcquireQuantumMemory(image->columns,
-        (image->matte ?  2 : 1)*sizeof(*quantum_scanline));
+        (image->alpha_trait ?  2 : 1)*sizeof(*quantum_scanline));
 
       if (quantum_scanline == (Quantum *) NULL)
         png_error(ping,"Memory allocation failed");
@@ -3322,7 +3322,7 @@
       quantum_scanline=(Quantum *) RelinquishMagickMemory(quantum_scanline);
     }
 
-    image->matte=found_transparent_pixel;
+    image->alpha_trait=found_transparent_pixel;
 
     if (logging != MagickFalse)
       {
@@ -3347,10 +3347,10 @@
       MagickBooleanType
         matte;
 
-      matte=image->matte;
-      image->matte=MagickFalse;
+      matte=image->alpha_trait;
+      image->alpha_trait=UndefinedPixelTrait;
       (void) SyncImage(image,exception);
-      image->matte=matte;
+      image->alpha_trait=matte;
     }
 
   png_read_end(ping,end_info);
@@ -3380,7 +3380,7 @@
         Image has a transparent background.
       */
       storage_class=image->storage_class;
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
 
 /* Balfour fix from imagemagick discourse server, 5 Feb 2010 */
 
@@ -3390,7 +3390,7 @@
             {
               for (x=0; x < ping_num_trans; x++)
               {
-                 image->colormap[x].matte=MagickTrue;
+                 image->colormap[x].alpha_trait=BlendPixelTrait;
                  image->colormap[x].alpha =
                    ScaleCharToQuantum((unsigned char)ping_trans_alpha[x]);
               }
@@ -3403,7 +3403,7 @@
                  if (ScaleQuantumToShort(image->colormap[x].red) ==
                      transparent_color.alpha)
                  {
-                    image->colormap[x].matte=MagickTrue;
+                    image->colormap[x].alpha_trait=BlendPixelTrait;
                     image->colormap[x].alpha = (Quantum) TransparentAlpha;
                  }
               }
@@ -3604,11 +3604,11 @@
     }
 #endif
 
-   /* Set image->matte to MagickTrue if the input colortype supports
+   /* Set image->alpha_trait to MagickTrue if the input colortype supports
     * alpha or if a valid tRNS chunk is present, no matter whether there
     * is actual transparency present.
     */
-    image->matte=(((int) ping_color_type == PNG_COLOR_TYPE_RGB_ALPHA) ||
+    image->alpha_trait=(((int) ping_color_type == PNG_COLOR_TYPE_RGB_ALPHA) ||
         ((int) ping_color_type == PNG_COLOR_TYPE_GRAY_ALPHA) ||
         (png_get_valid(ping,ping_info,PNG_INFO_tRNS))) ?
         MagickTrue : MagickFalse;
@@ -3845,7 +3845,7 @@
   if (LocaleCompare(image_info->magick,"PNG24") == 0)
     {
       (void) SetImageType(image,TrueColorType,exception);
-      image->matte=MagickFalse;
+      image->alpha_trait=UndefinedPixelTrait;
     }
 
   if (LocaleCompare(image_info->magick,"PNG32") == 0)
@@ -4518,7 +4518,7 @@
                exception);
              q=GetAuthenticPixels(image,0,y,image->columns,1,exception);
 
-             if (image->matte != MagickFalse)
+             if (image->alpha_trait == BlendPixelTrait)
                for (x=(ssize_t) image->columns; x != 0; x--)
                {
                   SetPixelAlpha(image,GetPixelRed(jng_image,s),q);
@@ -4531,7 +4531,7 @@
                {
                   SetPixelAlpha(image,GetPixelRed(jng_image,s),q);
                   if (GetPixelAlpha(image,q) != OpaqueAlpha)
-                    image->matte=MagickTrue;
+                    image->alpha_trait=BlendPixelTrait;
                   q+=GetPixelChannels(image);
                   s+=GetPixelChannels(jng_image);
                }
@@ -5503,7 +5503,7 @@
                 image->page.x=mng_info->clip.left;
                 image->page.y=mng_info->clip.top;
                 image->background_color=mng_background_color;
-                image->matte=MagickFalse;
+                image->alpha_trait=UndefinedPixelTrait;
                 image->delay=0;
                 (void) SetImageBackgroundColor(image,exception);
 
@@ -6111,7 +6111,7 @@
             image->page.x=mng_info->clip.left;
             image->page.y=mng_info->clip.top;
             image->background_color=mng_background_color;
-            image->matte=MagickFalse;
+            image->alpha_trait=UndefinedPixelTrait;
             (void) SetImageBackgroundColor(image,exception);
 
             if (logging != MagickFalse)
@@ -6374,7 +6374,7 @@
 #define QM Quantum
 #endif
 
-                if (image->matte != MagickFalse)
+                if (image->alpha_trait == BlendPixelTrait)
                    (void) SetImageBackgroundColor(large_image,exception);
 
                 else
@@ -6513,7 +6513,7 @@
                                  ((ssize_t) (m*2))
                                  +GetPixelBlue(image,pixels)))),q);
 
-                              if (image->matte != MagickFalse)
+                              if (image->alpha_trait == BlendPixelTrait)
                                  SetPixelAlpha(large_image, ((QM) (((ssize_t)
                                     (2*i*(GetPixelAlpha(image,n)
                                     -GetPixelAlpha(image,pixels)+m))
@@ -6670,7 +6670,7 @@
                                  -GetPixelBlue(image,pixels))+m)
                                  /((ssize_t) (m*2))+
                                  GetPixelBlue(image,pixels)),q);
-                              if (image->matte != MagickFalse)
+                              if (image->alpha_trait == BlendPixelTrait)
                                  SetPixelAlpha(image,(QM) ((2*i*(
                                    GetPixelAlpha(image,n)
                                    -GetPixelAlpha(image,pixels))+m)
@@ -6921,7 +6921,7 @@
       image->page.x=0;
       image->page.y=0;
       image->background_color=mng_background_color;
-      image->matte=MagickFalse;
+      image->alpha_trait=UndefinedPixelTrait;
 
       if (image_info->ping == MagickFalse)
         (void) SetImageBackgroundColor(image,exception);
@@ -8117,7 +8117,7 @@
      * This code will delete the colormap and change the image to
      * DirectClass.
      *
-     * If image->matte is MagickFalse, we ignore the alpha channel
+     * If image->alpha_trait is MagickFalse, we ignore the alpha channel
      * even though it sometimes contains left-over non-opaque values.
      *
      * Also we gather some information (number of opaque, transparent,
@@ -8154,7 +8154,7 @@
        (void) LogMagickEvent(CoderEvent,GetMagickModule(),
              "      image->rows=%.20g",(double) image->rows);
        (void) LogMagickEvent(CoderEvent,GetMagickModule(),
-             "      image->matte=%.20g",(double) image->matte);
+             "      image->alpha_trait=%.20g",(double) image->alpha_trait);
        (void) LogMagickEvent(CoderEvent,GetMagickModule(),
              "      image->depth=%.20g",(double) image->depth);
 
@@ -8217,7 +8217,7 @@
 
        for (x=0; x < (ssize_t) image->columns; x++)
        {
-           if (image->matte == MagickFalse ||
+           if (image->alpha_trait != BlendPixelTrait ||
               GetPixelAlpha(image,q) == OpaqueAlpha)
              {
                if (number_opaque < 259)
@@ -8532,7 +8532,7 @@
               {
                 for (i=0; i< (ssize_t) image_colors; i++)
                 {
-                  if ((image->matte == MagickFalse ||
+                  if ((image->alpha_trait != BlendPixelTrait ||
                       image->colormap[i].alpha == GetPixelAlpha(image,q)) &&
                       image->colormap[i].red == GetPixelRed(image,q) &&
                       image->colormap[i].green == GetPixelGreen(image,q) &&
@@ -8991,7 +8991,7 @@
   quantum_info = (QuantumInfo *) NULL;
   number_colors=0;
   image_colors=(int) image->colors;
-  image_matte=image->matte;
+  image_matte=image->alpha_trait;
 
   mng_info->IsPalette=image->storage_class == PseudoClass &&
     image_colors <= 256 && image->colormap != NULL;
@@ -9124,7 +9124,7 @@
      (void) LogMagickEvent(CoderEvent,GetMagickModule(),
         "    height=%.20g",(double) ping_height);
      (void) LogMagickEvent(CoderEvent,GetMagickModule(),
-        "    image_matte=%.20g",(double) image->matte);
+        "    image_matte=%.20g",(double) image->alpha_trait);
      (void) LogMagickEvent(CoderEvent,GetMagickModule(),
         "    image->depth=%.20g",(double) image->depth);
      (void) LogMagickEvent(CoderEvent,GetMagickModule(),
@@ -9423,7 +9423,7 @@
 
       if (ping_color_type == PNG_COLOR_TYPE_GRAY)
         {
-          if (image->matte == MagickFalse && ping_have_non_bw == MagickFalse)
+          if (image->alpha_trait != BlendPixelTrait && ping_have_non_bw == MagickFalse)
              ping_bit_depth=1;
         }
 
@@ -10230,10 +10230,10 @@
         "Cannot write image with defined png:bit-depth or png:color-type.");
     }
 
-  if (image_matte != MagickFalse && image->matte == MagickFalse)
+  if (image_matte != MagickFalse && image->alpha_trait != BlendPixelTrait)
     {
       /* Add an opaque matte channel */
-      image->matte = MagickTrue;
+      image->alpha_trait = MagickTrue;
       (void) SetImageAlpha(image,OpaqueAlpha,exception);
 
       if (logging != MagickFalse)
@@ -11169,7 +11169,7 @@
       mng_info->write_png_depth = 8;
       image->depth = 8;
 
-      if (image->matte == MagickTrue)
+      if (image->alpha_trait == BlendPixelTrait)
         (void) SetImageType(image,TrueColorMatteType,exception);
 
       else
@@ -11184,7 +11184,7 @@
       mng_info->write_png_depth = 8;
       image->depth = 8;
 
-      if (image->matte == MagickTrue)
+      if (image->alpha_trait == BlendPixelTrait)
         (void) SetImageType(image,TrueColorMatteType,exception);
 
       else
@@ -11815,7 +11815,7 @@
 
   status=MagickTrue;
   transparent=image_info->type==GrayscaleMatteType ||
-     image_info->type==TrueColorMatteType || image->matte != MagickFalse;
+     image_info->type==TrueColorMatteType || image->alpha_trait == BlendPixelTrait;
 
   jng_quality=image_info->quality == 0UL ? 75UL : image_info->quality%1000;
 
@@ -11849,7 +11849,7 @@
       if (jpeg_image == (Image *) NULL)
         ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
       (void) CopyMagickString(jpeg_image->magick,"JPEG",MaxTextExtent);
-      jpeg_image->matte=MagickFalse;
+      jpeg_image->alpha_trait=UndefinedPixelTrait;
       jpeg_image->quality=jng_alpha_quality;
       jpeg_image_info->type=GrayscaleType;
       (void) SetImageType(jpeg_image,GrayscaleType,exception);
@@ -12530,7 +12530,7 @@
         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
           "      Image depth: %.20g",(double) p->depth);
 
-        if (p->matte)
+        if (p->alpha_trait)
           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
             "      Matte: True");
 
@@ -12624,11 +12624,11 @@
         if (next_image->page.x || next_image->page.y)
           need_defi=MagickTrue;
 
-        if (next_image->matte)
+        if (next_image->alpha_trait)
           need_matte=MagickTrue;
 
         if ((int) next_image->dispose >= BackgroundDispose)
-          if (next_image->matte || next_image->page.x || next_image->page.y ||
+          if (next_image->alpha_trait || next_image->page.x || next_image->page.y ||
               ((next_image->columns < mng_info->page.width) &&
                (next_image->rows < mng_info->page.height)))
             mng_info->need_fram=MagickTrue;
@@ -12647,7 +12647,7 @@
         /*
           check for global palette possibility.
         */
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
            need_local_plte=MagickTrue;
 
         if (need_local_plte == 0)
@@ -13000,7 +13000,7 @@
        Write MNG BACK chunk and global bKGD chunk, if the image is transparent
        or does not cover the entire frame.
      */
-     if (write_mng && (image->matte || image->page.x > 0 ||
+     if (write_mng && (image->alpha_trait || image->page.x > 0 ||
          image->page.y > 0 || (image->page.width &&
          (image->page.width+image->page.x < mng_info->page.width))
          || (image->page.height && (image->page.height+image->page.y
diff --git a/coders/pnm.c b/coders/pnm.c
index 0162ad1..8a4a087 100644
--- a/coders/pnm.c
+++ b/coders/pnm.c
@@ -379,7 +379,7 @@
               if (LocaleCompare(value,"BLACKANDWHITE_ALPHA") == 0)
                 {
                   SetImageColorspace(image,GRAYColorspace,exception);
-                  image->matte=MagickTrue;
+                  image->alpha_trait=BlendPixelTrait;
                   quantum_type=GrayAlphaQuantum;
                 }
               if (LocaleCompare(value,"GRAYSCALE") == 0)
@@ -390,12 +390,12 @@
               if (LocaleCompare(value,"GRAYSCALE_ALPHA") == 0)
                 {
                   SetImageColorspace(image,GRAYColorspace,exception);
-                  image->matte=MagickTrue;
+                  image->alpha_trait=BlendPixelTrait;
                   quantum_type=GrayAlphaQuantum;
                 }
               if (LocaleCompare(value,"RGB_ALPHA") == 0)
                 {
-                  image->matte=MagickTrue;
+                  image->alpha_trait=BlendPixelTrait;
                   quantum_type=RGBAQuantum;
                 }
               if (LocaleCompare(value,"CMYK") == 0)
@@ -406,7 +406,7 @@
               if (LocaleCompare(value,"CMYK_ALPHA") == 0)
                 {
                   SetImageColorspace(image,CMYKColorspace,exception);
-                  image->matte=MagickTrue;
+                  image->alpha_trait=BlendPixelTrait;
                   quantum_type=CMYKAQuantum;
                 }
             }
@@ -926,7 +926,7 @@
             break;
           }
         }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           channels++;
         extent=channels*(image->depth <= 8 ? 1 : 2)*image->columns;
         quantum_info=AcquireQuantumInfo(image_info,image);
@@ -999,7 +999,7 @@
                       p=PushCharPixel(p,&pixel);
                       SetPixelGray(image,ScaleAnyToQuantum(pixel,range),q);
                       SetPixelAlpha(image,OpaqueAlpha,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           p=PushCharPixel(p,&pixel);
                           SetPixelAlpha(image,ScaleAnyToQuantum(pixel,range),q);
@@ -1017,7 +1017,7 @@
                       p=PushShortPixel(MSBEndian,p,&pixel);
                       SetPixelGray(image,ScaleAnyToQuantum(pixel,range),q);
                       SetPixelAlpha(image,OpaqueAlpha,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           p=PushShortPixel(MSBEndian,p,&pixel);
                           SetPixelAlpha(image,ScaleAnyToQuantum(pixel,range),q);
@@ -1046,7 +1046,7 @@
                       p=PushCharPixel(p,&pixel);
                       SetPixelBlack(image,ScaleAnyToQuantum(pixel,range),q);
                       SetPixelAlpha(image,OpaqueAlpha,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           p=PushCharPixel(p,&pixel);
                           SetPixelAlpha(image,ScaleAnyToQuantum(pixel,range),q);
@@ -1070,7 +1070,7 @@
                       p=PushShortPixel(MSBEndian,p,&pixel);
                       SetPixelBlack(image,ScaleAnyToQuantum(pixel,range),q);
                       SetPixelAlpha(image,OpaqueAlpha,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           p=PushShortPixel(MSBEndian,p,&pixel);
                           SetPixelAlpha(image,ScaleAnyToQuantum(pixel,range),q);
@@ -1096,7 +1096,7 @@
                       p=PushCharPixel(p,&pixel);
                       SetPixelBlue(image,ScaleAnyToQuantum(pixel,range),q);
                       SetPixelAlpha(image,OpaqueAlpha,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           p=PushCharPixel(p,&pixel);
                           SetPixelAlpha(image,ScaleAnyToQuantum(pixel,range),q);
@@ -1118,7 +1118,7 @@
                       p=PushShortPixel(MSBEndian,p,&pixel);
                       SetPixelBlue(image,ScaleAnyToQuantum(pixel,range),q);
                       SetPixelAlpha(image,OpaqueAlpha,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           p=PushShortPixel(MSBEndian,p,&pixel);
                           SetPixelAlpha(image,ScaleAnyToQuantum(pixel,range),q);
@@ -1577,14 +1577,14 @@
           default:
           {
             quantum_type=RGBQuantum;
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               quantum_type=RGBAQuantum;
             packet_size=3;
             (void) CopyMagickString(type,"RGB",MaxTextExtent);
             break;
           }
         }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             packet_size++;
             (void) ConcatenateMagickString(type,"_ALPHA",MaxTextExtent);
@@ -2018,7 +2018,7 @@
                     {
                       pixel=ScaleQuantumToAny(GetPixelIntensity(image,p),range);
                       q=PopCharPixel((unsigned char) pixel,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           pixel=(unsigned char) ScaleQuantumToAny(
                             GetPixelAlpha(image,p),range);
@@ -2031,7 +2031,7 @@
                     {
                       pixel=ScaleQuantumToAny(GetPixelIntensity(image,p),range);
                       q=PopShortPixel(MSBEndian,(unsigned short) pixel,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           pixel=(unsigned char) ScaleQuantumToAny(
                             GetPixelAlpha(image,p),range);
@@ -2055,7 +2055,7 @@
                       q=PopCharPixel((unsigned char) pixel,q);
                       pixel=ScaleQuantumToAny(GetPixelBlack(image,p),range);
                       q=PopCharPixel((unsigned char) pixel,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           pixel=ScaleQuantumToAny(GetPixelAlpha(image,p),range);
                           q=PopCharPixel((unsigned char) pixel,q);
@@ -2073,7 +2073,7 @@
                       q=PopShortPixel(MSBEndian,(unsigned short) pixel,q);
                       pixel=ScaleQuantumToAny(GetPixelBlack(image,p),range);
                       q=PopShortPixel(MSBEndian,(unsigned short) pixel,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           pixel=ScaleQuantumToAny(GetPixelAlpha(image,p),range);
                           q=PopShortPixel(MSBEndian,(unsigned short) pixel,q);
@@ -2093,7 +2093,7 @@
                       q=PopCharPixel((unsigned char) pixel,q);
                       pixel=ScaleQuantumToAny(GetPixelBlue(image,p),range);
                       q=PopCharPixel((unsigned char) pixel,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           pixel=ScaleQuantumToAny(GetPixelAlpha(image,p),range);
                           q=PopCharPixel((unsigned char) pixel,q);
@@ -2109,7 +2109,7 @@
                       q=PopShortPixel(MSBEndian,(unsigned short) pixel,q);
                       pixel=ScaleQuantumToAny(GetPixelBlue(image,p),range);
                       q=PopShortPixel(MSBEndian,(unsigned short) pixel,q);
-                      if (image->matte != MagickFalse)
+                      if (image->alpha_trait == BlendPixelTrait)
                         {
                           pixel=ScaleQuantumToAny(GetPixelAlpha(image,p),range);
                           q=PopShortPixel(MSBEndian,(unsigned short) pixel,q);
diff --git a/coders/ps.c b/coders/ps.c
index fba33ec..fb563c8 100644
--- a/coders/ps.c
+++ b/coders/ps.c
@@ -1050,7 +1050,7 @@
 {
 #define WriteRunlengthPacket(image,pixel,length,p) \
 { \
-  if ((image->matte != MagickFalse) && \
+  if ((image->alpha_trait == BlendPixelTrait) && \
       (GetPixelAlpha(image,p) == (Quantum) TransparentAlpha)) \
     { \
       q=PopHexPixel(hex_digits,0xff,q); \
@@ -1880,7 +1880,7 @@
       }
     else
       if ((image->storage_class == DirectClass) ||
-          (image->colors > 256) || (image->matte != MagickFalse))
+          (image->colors > 256) || (image->alpha_trait == BlendPixelTrait))
         {
           /*
             Dump DirectClass image.
@@ -1965,7 +1965,7 @@
                   break;
                 for (x=0; x < (ssize_t) image->columns; x++)
                 {
-                  if ((image->matte != MagickFalse) &&
+                  if ((image->alpha_trait == BlendPixelTrait) &&
                       (GetPixelAlpha(image,p) == (Quantum) TransparentAlpha))
                     {
                       q=PopHexPixel(hex_digits,0xff,q);
diff --git a/coders/ps2.c b/coders/ps2.c
index ea668f4..06e19c3 100644
--- a/coders/ps2.c
+++ b/coders/ps2.c
@@ -841,7 +841,7 @@
       }
     else
       if ((image->storage_class == DirectClass) || (image->colors > 256) ||
-          (compression == JPEGCompression) || (image->matte != MagickFalse))
+          (compression == JPEGCompression) || (image->alpha_trait == BlendPixelTrait))
         {
           (void) FormatLocaleString(buffer,MaxTextExtent,"%.20g %.20g\n0\n%d\n",
             (double) image->columns,(double) image->rows,(int)
@@ -888,7 +888,7 @@
                   break;
                 for (x=0; x < (ssize_t) image->columns; x++)
                 {
-                  if ((image->matte != MagickFalse) &&
+                  if ((image->alpha_trait == BlendPixelTrait) &&
                       (GetPixelAlpha(image,p) == (Quantum) TransparentAlpha))
                     {
                       *q++=ScaleQuantumToChar(QuantumRange);
@@ -942,7 +942,7 @@
                   break;
                 for (x=0; x < (ssize_t) image->columns; x++)
                 {
-                  if ((image->matte != MagickFalse) &&
+                  if ((image->alpha_trait == BlendPixelTrait) &&
                       (GetPixelAlpha(image,p) == (Quantum) TransparentAlpha))
                     {
                       Ascii85Encode(image,ScaleQuantumToChar((Quantum)
diff --git a/coders/ps3.c b/coders/ps3.c
index f87ff55..3cf1f45 100644
--- a/coders/ps3.c
+++ b/coders/ps3.c
@@ -460,7 +460,7 @@
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  assert(image->matte != MagickFalse);
+  assert(image->alpha_trait == BlendPixelTrait);
   status=MagickTrue;
   /*
     Note BeginData DSC comment for update later.
@@ -521,7 +521,7 @@
     ThrowWriterException(CoderError,exception->reason);
   (void) SetImageType(mask_image,BilevelType,exception);
   (void) SetImageType(mask_image,PaletteType,exception);
-  mask_image->matte=MagickFalse;
+  mask_image->alpha_trait=UndefinedPixelTrait;
   pixels=(unsigned char *) NULL;
   length=0;
   switch (compression)
@@ -881,7 +881,7 @@
     case Group4Compression:
     { 
       if ((IsImageMonochrome(image,exception) == MagickFalse) ||
-          (image->matte != MagickFalse))
+          (image->alpha_trait == BlendPixelTrait))
         compression=RLECompression;
       break;
     }
@@ -1150,7 +1150,7 @@
     /*
       Image mask.
     */
-    if ((image->matte != MagickFalse) &&
+    if ((image->alpha_trait == BlendPixelTrait) &&
         (WritePS3MaskImage(image_info,image,compression,exception) == MagickFalse))
       {
         (void) CloseBlob(image);
@@ -1224,7 +1224,7 @@
     /*
       Masked image?
     */
-    (void) WriteBlobString(image,image->matte != MagickFalse ?
+    (void) WriteBlobString(image,image->alpha_trait == BlendPixelTrait ?
       "true\n" : "false\n");
     /*
       Render with imagemask operator?
diff --git a/coders/psd.c b/coders/psd.c
index 4c89e28..4e8040b 100644
--- a/coders/psd.c
+++ b/coders/psd.c
@@ -697,7 +697,7 @@
           if (image->colorspace == CMYKColorspace)
             SetPixelBlack(image,pixel,q);
           else
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               SetPixelAlpha(image,pixel,q);
           break;
         }
@@ -706,7 +706,7 @@
           if ((IssRGBCompatibleColorspace(image->colorspace) != MagickFalse) &&
               (channels > 3))
             break;
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             SetPixelAlpha(image,pixel,q);
           break;
         }
@@ -832,7 +832,7 @@
       image=DestroyImageList(image);
       return((Image *) NULL);
     }
-  image->matte=psd_info.channels >= 4 ? MagickTrue : MagickFalse;
+  image->alpha_trait=psd_info.channels >= 4 ? MagickTrue : MagickFalse;
   if (psd_info.mode == LabMode)
     SetImageColorspace(image,LabColorspace,exception);
   psd_info.color_channels=3;
@@ -840,7 +840,7 @@
     {
       psd_info.color_channels=4;
       SetImageColorspace(image,CMYKColorspace,exception);
-      image->matte=psd_info.channels >= 5 ? MagickTrue : MagickFalse;
+      image->alpha_trait=psd_info.channels >= 5 ? MagickTrue : MagickFalse;
     }
   if ((psd_info.mode == BitmapMode) || (psd_info.mode == GrayscaleMode) ||
       (psd_info.mode == DuotoneMode))
@@ -848,13 +848,13 @@
       psd_info.color_channels=1;
       if (AcquireImageColormap(image,256,exception) == MagickFalse)
         ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
-      image->matte=psd_info.channels >= 2 ? MagickTrue : MagickFalse;
+      image->alpha_trait=psd_info.channels >= 2 ? MagickTrue : MagickFalse;
       if (image->debug != MagickFalse)
         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
           "  Image colormap allocated");
       SetImageColorspace(image,GRAYColorspace,exception);
     }
-  image->matte=MagickFalse;
+  image->alpha_trait=UndefinedPixelTrait;
   /*
     Read PSD raster colormap only present for indexed and duotone images.
   */
@@ -892,7 +892,7 @@
           for (i=0; i < (ssize_t) image->colors; i++)
             image->colormap[i].blue=ScaleCharToQuantum((unsigned char)
               ReadBlobByte(image));
-          image->matte=MagickFalse;
+          image->alpha_trait=UndefinedPixelTrait;
         }
     }
   length=ReadBlobMSBLong(image);
@@ -989,11 +989,11 @@
           MagickOffsetType
             layer_offset;
 
-          image->matte=psd_info.channels > psd_info.color_channels ?  MagickTrue : MagickFalse;
+          image->alpha_trait=psd_info.channels > psd_info.color_channels ?  MagickTrue : MagickFalse;
 
           if (image->debug != MagickFalse)
             (void) LogMagickEvent(CoderEvent,GetMagickModule(),
-              image->matte ? "  image has matte" : "  image has no matte");
+              image->alpha_trait ? "  image has matte" : "  image has no matte");
 
           layer_offset=offset+length;
           number_layers=(short) ReadBlobMSBShort(image);
@@ -1045,7 +1045,7 @@
                   quantum;
 
                 if (layer_info[i].channels == psd_info.color_channels)
-                  image->matte=MagickFalse;
+                  image->alpha_trait=UndefinedPixelTrait;
                 quantum=psd_info.version == 1 ? 4UL : 8UL;
                 if (DiscardBlobBytes(image,length-20-quantum) == MagickFalse)
                   ThrowFileException(exception,CorruptImageError,
@@ -1242,7 +1242,7 @@
               SetImageColorspace(layer_info[i].image,GRAYColorspace,exception);
             for (j=0; j < (ssize_t) layer_info[i].channels; j++)
               if (layer_info[i].channel_info[j].type == -1)
-                layer_info[i].image->matte=MagickTrue;
+                layer_info[i].image->alpha_trait=BlendPixelTrait;
             /*
               Set up some hidden attributes for folks that need them.
             */
@@ -1831,14 +1831,14 @@
           (void) WriteBlobMSBShort(image,1);
           WritePackbitsLength(psd_info,image_info,image,next_image,
             compact_pixels,GrayQuantum,exception);
-          if (next_image->matte != MagickFalse)
+          if (next_image->alpha_trait == BlendPixelTrait)
             WritePackbitsLength(psd_info,image_info,image,next_image,
               compact_pixels,AlphaQuantum,exception);
         }
       WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels,
         GrayQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue :
         MagickFalse,exception);
-      if (next_image->matte != MagickFalse)
+      if (next_image->alpha_trait == BlendPixelTrait)
         WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels,
           AlphaQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue :
           MagickFalse,exception);
@@ -1855,14 +1855,14 @@
             (void) WriteBlobMSBShort(image,1);
             WritePackbitsLength(psd_info,image_info,image,next_image,
               compact_pixels,IndexQuantum,exception);
-            if (next_image->matte != MagickFalse)
+            if (next_image->alpha_trait == BlendPixelTrait)
               WritePackbitsLength(psd_info,image_info,image,next_image,
                 compact_pixels,AlphaQuantum,exception);
           }
         WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels,
           IndexQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue :
           MagickFalse,exception);
-        if (next_image->matte != MagickFalse)
+        if (next_image->alpha_trait == BlendPixelTrait)
           WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels,
             AlphaQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue :
             MagickFalse,exception);
@@ -1887,7 +1887,7 @@
             if (next_image->colorspace == CMYKColorspace)
               WritePackbitsLength(psd_info,image_info,image,next_image,
                 compact_pixels,BlackQuantum,exception);
-            if (next_image->matte != MagickFalse)
+            if (next_image->alpha_trait == BlendPixelTrait)
               WritePackbitsLength(psd_info,image_info,image,next_image,
                 compact_pixels,AlphaQuantum,exception);
           }
@@ -1909,7 +1909,7 @@
             BlackQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue :
             MagickFalse,exception);
         (void) SetImageProgress(image,SaveImagesTag,4,6);
-        if (next_image->matte != MagickFalse)
+        if (next_image->alpha_trait == BlendPixelTrait)
           WriteOneChannel(psd_info,image_info,image,next_image,compact_pixels,
             AlphaQuantum,(i++ == 0) || (separate != MagickFalse) ? MagickTrue :
             MagickFalse,exception);
@@ -2127,7 +2127,7 @@
   if (status == MagickFalse)
     return(status);
   packet_size=(size_t) (image->depth > 8 ? 6 : 3);
-  if (image->matte != MagickFalse)
+  if (image->alpha_trait == BlendPixelTrait)
     packet_size+=image->depth > 8 ? 2 : 1;
   psd_info.version=1;
   if ((LocaleCompare(image_info->magick,"PSB") == 0) ||
@@ -2138,16 +2138,16 @@
   for (i=1; i <= 6; i++)
     (void) WriteBlobByte(image, 0);  /* 6 bytes of reserved */
   if (IsImageGray(image,exception) != MagickFalse)
-    num_channels=(image->matte != MagickFalse ? 2UL : 1UL);
+    num_channels=(image->alpha_trait == BlendPixelTrait ? 2UL : 1UL);
   else
     if (image->storage_class == PseudoClass)
-      num_channels=(image->matte != MagickFalse ? 2UL : 1UL);
+      num_channels=(image->alpha_trait == BlendPixelTrait ? 2UL : 1UL);
     else
       {
         if (image->colorspace != CMYKColorspace)
-          num_channels=(image->matte != MagickFalse ? 4UL : 3UL);
+          num_channels=(image->alpha_trait == BlendPixelTrait ? 4UL : 3UL);
         else
-          num_channels=(image->matte != MagickFalse ? 5UL : 4UL);
+          num_channels=(image->alpha_trait == BlendPixelTrait ? 5UL : 4UL);
       }
   (void) WriteBlobMSBShort(image,(unsigned short) num_channels);
   (void) WriteBlobMSBLong(image,(unsigned int) image->rows);
@@ -2250,22 +2250,22 @@
   layer_count=0;
   layer_info_size=2;
   base_image=GetNextImageInList(image);
-  if ((image->matte != MagickFalse) && (base_image == (Image *) NULL))
+  if ((image->alpha_trait == BlendPixelTrait) && (base_image == (Image *) NULL))
     base_image=image;
   next_image=base_image;
   while ( next_image != NULL )
   {
     packet_size=next_image->depth > 8 ? 2UL : 1UL;
     if (IsImageGray(next_image,exception) != MagickFalse)
-      num_channels=next_image->matte != MagickFalse ? 2UL : 1UL;
+      num_channels=next_image->alpha_trait == BlendPixelTrait ? 2UL : 1UL;
     else
       if (next_image->storage_class == PseudoClass)
-        num_channels=next_image->matte != MagickFalse ? 2UL : 1UL;
+        num_channels=next_image->alpha_trait == BlendPixelTrait ? 2UL : 1UL;
       else
         if (next_image->colorspace != CMYKColorspace)
-          num_channels=next_image->matte != MagickFalse ? 4UL : 3UL;
+          num_channels=next_image->alpha_trait == BlendPixelTrait ? 4UL : 3UL;
         else
-          num_channels=next_image->matte != MagickFalse ? 5UL : 4UL;
+          num_channels=next_image->alpha_trait == BlendPixelTrait ? 5UL : 4UL;
     channelLength=(size_t) (next_image->columns*next_image->rows*packet_size+2);
     layer_info_size+=(size_t) (4*4+2+num_channels*6+(psd_info.version == 1 ? 8 :
       16)+4*1+4+num_channels*channelLength);
@@ -2317,10 +2317,10 @@
             (next_image->storage_class == PseudoClass))
           {
              (void) WriteBlobMSBShort(image,(unsigned short)
-               (next_image->matte != MagickFalse ? 2 : 1));
+               (next_image->alpha_trait == BlendPixelTrait ? 2 : 1));
              (void) WriteBlobMSBShort(image,0);
              (void) SetPSDSize(&psd_info,image,channel_size);
-             if (next_image->matte != MagickFalse)
+             if (next_image->alpha_trait == BlendPixelTrait)
                {
                  (void) WriteBlobMSBShort(image,(unsigned short) -1);
                  (void) SetPSDSize(&psd_info,image,channel_size);
@@ -2330,14 +2330,14 @@
             if (next_image->colorspace != CMYKColorspace)
               {
                 (void) WriteBlobMSBShort(image,(unsigned short)
-                  (next_image->matte != MagickFalse ? 4 : 3));
+                  (next_image->alpha_trait == BlendPixelTrait ? 4 : 3));
                (void) WriteBlobMSBShort(image,0);
                (void) SetPSDSize(&psd_info,image,channel_size);
                (void) WriteBlobMSBShort(image,1);
                (void) SetPSDSize(&psd_info,image,channel_size);
                (void) WriteBlobMSBShort(image,2);
                (void) SetPSDSize(&psd_info,image,channel_size);
-               if (next_image->matte!= MagickFalse )
+               if (next_image->alpha_trait == BlendPixelTrait)
                  {
                    (void) WriteBlobMSBShort(image,(unsigned short) -1);
                    (void) SetPSDSize(&psd_info,image,channel_size);
@@ -2346,7 +2346,7 @@
            else
              {
                (void) WriteBlobMSBShort(image,(unsigned short)
-                 (next_image->matte ? 5 : 4));
+                 (next_image->alpha_trait ? 5 : 4));
                (void) WriteBlobMSBShort(image,0);
                (void) SetPSDSize(&psd_info,image,channel_size);
                (void) WriteBlobMSBShort(image,1);
@@ -2355,7 +2355,7 @@
                (void) SetPSDSize(&psd_info,image,channel_size);
                (void) WriteBlobMSBShort(image,3);
                (void) SetPSDSize(&psd_info,image,channel_size);
-               if (next_image->matte)
+               if (next_image->alpha_trait)
                  {
                    (void) WriteBlobMSBShort(image,(unsigned short) -1);
                    (void) SetPSDSize(&psd_info,image,channel_size);
diff --git a/coders/rgb.c b/coders/rgb.c
index 0859a0d..6412699 100644
--- a/coders/rgb.c
+++ b/coders/rgb.c
@@ -167,13 +167,13 @@
   if (LocaleCompare(image_info->magick,"RGBA") == 0)
     {
       quantum_type=RGBAQuantum;
-      image->matte=MagickTrue;
-      canvas_image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
+      canvas_image->alpha_trait=BlendPixelTrait;
     }
   if (LocaleCompare(image_info->magick,"RGBO") == 0)
     {
       quantum_type=RGBOQuantum;
-      canvas_image->matte=MagickTrue;
+      canvas_image->alpha_trait=BlendPixelTrait;
     }
   if (image_info->number_scenes != 0)
     while (image->scene < image_info->scene)
@@ -254,7 +254,7 @@
                 SetPixelGreen(image,GetPixelGreen(canvas_image,p),q);
                 SetPixelBlue(image,GetPixelBlue(canvas_image,p),q);
                 SetPixelAlpha(image,OpaqueAlpha,q);
-                if (image->matte != MagickFalse)
+                if (image->alpha_trait == BlendPixelTrait)
                   SetPixelAlpha(image,GetPixelAlpha(canvas_image,p),q);
                 p+=GetPixelChannels(canvas_image);
                 q+=GetPixelChannels(image);
@@ -311,7 +311,7 @@
                 "UnexpectedEndOfFile",image->filename);
               break;
             }
-          for (i=0; i < (ssize_t) (image->matte != MagickFalse ? 4 : 3); i++)
+          for (i=0; i < (ssize_t) (image->alpha_trait == BlendPixelTrait ? 4 : 3); i++)
           {
             quantum_type=quantum_types[i];
             q=GetAuthenticPixels(canvas_image,0,0,canvas_image->columns,1,
@@ -550,7 +550,7 @@
             if (status == MagickFalse)
               break;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             for (y=0; y < (ssize_t) image->extract_info.height; y++)
             {
@@ -830,7 +830,7 @@
             if (status == MagickFalse)
               break;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             (void) CloseBlob(image);
             AppendImageFormat("A",image->filename);
@@ -1111,7 +1111,7 @@
     if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse)
       (void) TransformImageColorspace(image,sRGBColorspace,exception);
     if ((LocaleCompare(image_info->magick,"RGBA") == 0) &&
-        (image->matte == MagickFalse))
+        (image->alpha_trait != BlendPixelTrait))
       (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
     quantum_info=AcquireQuantumInfo(image_info,image);
     if (quantum_info == (QuantumInfo *) NULL)
diff --git a/coders/rla.c b/coders/rla.c
index 843fd6f..1579a0d 100644
--- a/coders/rla.c
+++ b/coders/rla.c
@@ -252,7 +252,7 @@
   /*
     Initialize image structure.
   */
-  image->matte=rla_info.number_matte_channels != 0 ? MagickTrue : MagickFalse;
+  image->alpha_trait=rla_info.number_matte_channels != 0 ? MagickTrue : MagickFalse;
   image->columns=1UL*rla_info.active_window.right-rla_info.active_window.left+1;
   image->rows=1UL*rla_info.active_window.top-rla_info.active_window.bottom+1;
   if (image_info->ping != MagickFalse)
diff --git a/coders/rle.c b/coders/rle.c
index f28a967..506447d 100644
--- a/coders/rle.c
+++ b/coders/rle.c
@@ -212,7 +212,7 @@
     image->columns=ReadBlobLSBShort(image);
     image->rows=ReadBlobLSBShort(image);
     flags=(MagickStatusType) ReadBlobByte(image);
-    image->matte=flags & 0x04 ? MagickTrue : MagickFalse;
+    image->alpha_trait=flags & 0x04 ? MagickTrue : MagickFalse;
     number_planes=1UL*ReadBlobByte(image);
     bits_per_pixel=1UL*ReadBlobByte(image);
     number_colormaps=1UL*ReadBlobByte(image);
@@ -287,7 +287,7 @@
     /*
       Allocate RLE pixels.
     */
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       number_planes++;
     number_pixels=(MagickSizeType) image->columns*image->rows;
     if ((number_pixels*number_planes) != (size_t) (number_pixels*number_planes))
@@ -307,7 +307,7 @@
         p=rle_pixels;
         for (i=0; i < (ssize_t) number_pixels; i++)
         {
-          if (image->matte == MagickFalse)
+          if (image->alpha_trait != BlendPixelTrait)
             for (j=0; j < (ssize_t) number_planes; j++)
               *p++=background_color[j];
           else
@@ -445,7 +445,7 @@
             SetPixelRed(image,ScaleCharToQuantum(*p++),q);
             SetPixelGreen(image,ScaleCharToQuantum(*p++),q);
             SetPixelBlue(image,ScaleCharToQuantum(*p++),q);
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               SetPixelAlpha(image,ScaleCharToQuantum(*p++),q);
             q+=GetPixelChannels(image);
           }
@@ -490,7 +490,7 @@
               p++;
             }
         p=rle_pixels;
-        if (image->matte == MagickFalse)
+        if (image->alpha_trait != BlendPixelTrait)
           {
             /*
               Convert raster image to PseudoClass pixel packets.
diff --git a/coders/sgi.c b/coders/sgi.c
index 83db3a8..bfcd702 100644
--- a/coders/sgi.c
+++ b/coders/sgi.c
@@ -530,7 +530,7 @@
     /*
       Initialize image structure.
     */
-    image->matte=iris_info.depth == 4 ? MagickTrue : MagickFalse;
+    image->alpha_trait=iris_info.depth == 4 ? MagickTrue : MagickFalse;
     image->columns=iris_info.columns;
     image->rows=iris_info.rows;
     /*
@@ -558,7 +558,7 @@
                 SetPixelBlue(image,ScaleShortToQuantum((unsigned short)
                   ((*(p+4) << 8) | (*(p+5)))),q);
                 SetPixelAlpha(image,OpaqueAlpha,q);
-                if (image->matte != MagickFalse)
+                if (image->alpha_trait == BlendPixelTrait)
                   SetPixelAlpha(image,ScaleShortToQuantum((unsigned short)
                     ((*(p+6) << 8) | (*(p+7)))),q);
                 p+=8;
@@ -588,7 +588,7 @@
               SetPixelGreen(image,ScaleCharToQuantum(*(p+1)),q);
               SetPixelBlue(image,ScaleCharToQuantum(*(p+2)),q);
               SetPixelAlpha(image,OpaqueAlpha,q);
-              if (image->matte != MagickFalse)
+              if (image->alpha_trait == BlendPixelTrait)
                 SetPixelAlpha(image,ScaleCharToQuantum(*(p+3)),q);
               p+=4;
               q+=GetPixelChannels(image);
@@ -924,7 +924,7 @@
     iris_info.dimension=3;
     iris_info.columns=(unsigned short) image->columns;
     iris_info.rows=(unsigned short) image->rows;
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       iris_info.depth=4;
     else
       {
diff --git a/coders/sun.c b/coders/sun.c
index 56f4a64..e5b220f 100644
--- a/coders/sun.c
+++ b/coders/sun.c
@@ -383,7 +383,7 @@
       default:
         ThrowReaderException(CoderError,"ColormapTypeNotSupported");
     }
-    image->matte=sun_info.depth == 32 ? MagickTrue : MagickFalse;
+    image->alpha_trait=sun_info.depth == 32 ? MagickTrue : MagickFalse;
     image->columns=sun_info.width;
     image->rows=sun_info.height;
     if (image_info->ping != MagickFalse)
@@ -510,7 +510,7 @@
             bytes_per_pixel;
 
           bytes_per_pixel=3;
-          if (image->matte != MagickFalse)
+          if (image->alpha_trait == BlendPixelTrait)
             bytes_per_pixel++;
           length=image->rows*((bytes_per_line*image->columns)+
             image->columns % 2);
@@ -525,7 +525,7 @@
               break;
             for (x=0; x < (ssize_t) image->columns; x++)
             {
-              if (image->matte != MagickFalse)
+              if (image->alpha_trait == BlendPixelTrait)
                 SetPixelAlpha(image,ScaleCharToQuantum(*p++),q);
               if (sun_info.type == RT_STANDARD)
                 {
@@ -781,8 +781,8 @@
         /*
           Full color SUN raster.
         */
-        sun_info.depth=(unsigned int) image->matte ? 32U : 24U;
-        sun_info.length=(unsigned int) ((image->matte ? 4 : 3)*number_pixels);
+        sun_info.depth=(unsigned int) image->alpha_trait ? 32U : 24U;
+        sun_info.length=(unsigned int) ((image->alpha_trait ? 4 : 3)*number_pixels);
         sun_info.length+=sun_info.length & 0x01 ? (unsigned int) image->rows :
           0;
       }
@@ -842,7 +842,7 @@
           Allocate memory for pixels.
         */
         bytes_per_pixel=3;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           bytes_per_pixel++;
         length=image->columns;
         pixels=(unsigned char *) AcquireQuantumMemory(length,4*sizeof(*pixels));
@@ -859,7 +859,7 @@
           q=pixels;
           for (x=0; x < (ssize_t) image->columns; x++)
           {
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               *q++=ScaleQuantumToChar(GetPixelAlpha(image,p));
             *q++=ScaleQuantumToChar(GetPixelRed(image,p));
             *q++=ScaleQuantumToChar(GetPixelGreen(image,p));
diff --git a/coders/svg.c b/coders/svg.c
index ab6d4a7..0b2a0f4 100644
--- a/coders/svg.c
+++ b/coders/svg.c
@@ -2935,7 +2935,7 @@
         image->columns=gdk_pixbuf_get_width(pixel_info);
         image->rows=gdk_pixbuf_get_height(pixel_info);
 #endif
-        image->matte=MagickTrue;
+        image->alpha_trait=BlendPixelTrait;
         SetImageProperty(image,"svg:base-uri",
           rsvg_handle_get_base_uri(svg_handle),exception);
         if ((image->columns == 0) || (image->rows == 0))
diff --git a/coders/tga.c b/coders/tga.c
index 34c4563..b2e7e46 100644
--- a/coders/tga.c
+++ b/coders/tga.c
@@ -227,7 +227,7 @@
   image->columns=tga_info.width;
   image->rows=tga_info.height;
   alpha_bits=(tga_info.attributes & 0x0FU);
-  image->matte=(alpha_bits > 0) || (tga_info.bits_per_pixel == 32) ?
+  image->alpha_trait=(alpha_bits > 0) || (tga_info.bits_per_pixel == 32) ?
     MagickTrue : MagickFalse;
   if ((tga_info.image_type != TGAColormap) &&
       (tga_info.image_type != TGARLEColormap))
@@ -423,7 +423,7 @@
             pixel.green=ScaleAnyToQuantum((1UL*(k & 0x03) << 3)+
               (1UL*(j & 0xe0) >> 5),range);
             pixel.blue=ScaleAnyToQuantum(1UL*(j & 0x1f),range);
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               pixel.alpha=(k & 0x80) == 0 ? (Quantum) OpaqueAlpha : (Quantum)
                 TransparentAlpha; 
             if (image->storage_class == PseudoClass)
@@ -463,7 +463,7 @@
       SetPixelRed(image,pixel.red,q);
       SetPixelGreen(image,pixel.green,q);
       SetPixelBlue(image,pixel.blue,q);
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         SetPixelAlpha(image,pixel.alpha,q);
       q+=GetPixelChannels(image);
     }
@@ -717,7 +717,7 @@
   if ((image_info->type != TrueColorType) &&
       (image_info->type != TrueColorMatteType) &&
       (image_info->type != PaletteType) &&
-      (image->matte == MagickFalse) &&
+      (image->alpha_trait != BlendPixelTrait) &&
       (IsImageGray(image,exception) != MagickFalse))
     targa_info.image_type=TargaMonochrome;
   else
@@ -728,7 +728,7 @@
         */
         targa_info.image_type=TargaRGB;
         targa_info.bits_per_pixel=24;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             targa_info.bits_per_pixel=32;
             targa_info.attributes=8;  /* # of alpha bits */
@@ -811,7 +811,7 @@
             *q++=ScaleQuantumToChar(GetPixelBlue(image,p));
             *q++=ScaleQuantumToChar(GetPixelGreen(image,p));
             *q++=ScaleQuantumToChar(GetPixelRed(image,p));
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               *q++=(unsigned char) ScaleQuantumToChar(GetPixelAlpha(image,p));
           }
       p+=GetPixelChannels(image);
diff --git a/coders/thumbnail.c b/coders/thumbnail.c
index 2ae47db..8c044b9 100644
--- a/coders/thumbnail.c
+++ b/coders/thumbnail.c
@@ -205,7 +205,7 @@
     length,exception);
   if (thumbnail_image == (Image *) NULL)
     return(MagickFalse);
-  (void) SetImageType(thumbnail_image,thumbnail_image->matte == MagickFalse ?
+  (void) SetImageType(thumbnail_image,thumbnail_image->alpha_trait != BlendPixelTrait ?
     TrueColorType : TrueColorMatteType,exception);
   (void) CopyMagickString(thumbnail_image->filename,image->filename,
     MaxTextExtent);
diff --git a/coders/tiff.c b/coders/tiff.c
index 73a88fb..302219d 100644
--- a/coders/tiff.c
+++ b/coders/tiff.c
@@ -1204,12 +1204,12 @@
     if (extra_samples == 0)
       {
         if ((samples_per_pixel == 4) && (photometric == PHOTOMETRIC_RGB))
-          image->matte=MagickTrue;
+          image->alpha_trait=BlendPixelTrait;
       }
     else
       for (i=0; i < extra_samples; i++)
       {
-        image->matte=MagickTrue;
+        image->alpha_trait=BlendPixelTrait;
         if (sample_info[i] == EXTRASAMPLE_ASSOCALPHA)
           SetQuantumAlphaType(quantum_info,DisassociatedQuantumAlpha);
       }
@@ -1217,7 +1217,7 @@
     if (option != (const char *) NULL)
       associated_alpha=LocaleCompare(option,"associated") == 0 ? MagickTrue :
         MagickFalse;
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       (void) SetImageProperty(image,"tiff:alpha",
         associated_alpha != MagickFalse ? "associated" : "unassociated",
         exception);
@@ -1331,7 +1331,7 @@
           }
         quantum_type=IndexQuantum;
         pad=(size_t) MagickMax((size_t) samples_per_pixel-1,0);
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             if (image->storage_class != PseudoClass)
               {
@@ -1394,7 +1394,7 @@
         */
         pad=(size_t) MagickMax((size_t) samples_per_pixel-3,0);
         quantum_type=RGBQuantum;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             quantum_type=RGBAQuantum;
             pad=(size_t) MagickMax((size_t) samples_per_pixel-4,0);
@@ -1403,7 +1403,7 @@
           {
             pad=(size_t) MagickMax((size_t) samples_per_pixel-4,0);
             quantum_type=CMYKQuantum;
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               {
                 quantum_type=CMYKAQuantum;
                 pad=(size_t) MagickMax((size_t) samples_per_pixel-5,0);
@@ -1538,7 +1538,7 @@
               (TIFFGetG(*p))),q);
             SetPixelBlue(image,ScaleCharToQuantum((unsigned char)
               (TIFFGetB(*p))),q);
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               SetPixelAlpha(image,ScaleCharToQuantum((unsigned char)
                 (TIFFGetA(*p))),q);
             p++;
@@ -1623,7 +1623,7 @@
               x);
             for (row=rows_remaining; row > 0; row--)
             {
-              if (image->matte != MagickFalse)
+              if (image->alpha_trait == BlendPixelTrait)
                 for (column=columns_remaining; column > 0; column--)
                 {
                   SetPixelRed(image,ScaleCharToQuantum((unsigned char)
@@ -1718,7 +1718,7 @@
               TIFFGetG(*p)),q);
             SetPixelBlue(image,ScaleCharToQuantum((unsigned char)
               TIFFGetB(*p)),q);
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               SetPixelAlpha(image,ScaleCharToQuantum((unsigned char)
                 TIFFGetA(*p)),q);
             p--;
@@ -2932,7 +2932,7 @@
                   MagickFalse ? PHOTOMETRIC_MINISWHITE :
                   PHOTOMETRIC_MINISBLACK);
                 (void) TIFFSetField(tiff,TIFFTAG_SAMPLESPERPIXEL,1);
-                if ((image_info->depth == 0) && (image->matte == MagickFalse) &&
+                if ((image_info->depth == 0) && (image->alpha_trait != BlendPixelTrait) &&
                     (IsImageMonochrome(image,exception) != MagickFalse))
                   {
                     status=SetQuantumDepth(image,quantum_info,1);
@@ -3008,7 +3008,7 @@
     (void) TIFFSetField(tiff,TIFFTAG_COMPRESSION,compress_tag);
     (void) TIFFSetField(tiff,TIFFTAG_FILLORDER,endian);
     (void) TIFFSetField(tiff,TIFFTAG_BITSPERSAMPLE,quantum_info->depth);
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       {
         uint16
           extra_samples,
@@ -3272,7 +3272,7 @@
           default:
           {
             quantum_type=RGBQuantum;
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               quantum_type=RGBAQuantum;
             for (y=0; y < (ssize_t) image->rows; y++)
             {
@@ -3360,7 +3360,7 @@
                 if (status == MagickFalse)
                   break;
               }
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               for (y=0; y < (ssize_t) image->rows; y++)
               {
                 register const Quantum
@@ -3391,7 +3391,7 @@
           CMYK TIFF image.
         */
         quantum_type=CMYKQuantum;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           quantum_type=CMYKAQuantum;
         if (image->colorspace != CMYKColorspace)
           (void) TransformImageColorspace(image,CMYKColorspace,exception);
@@ -3456,7 +3456,7 @@
           Convert PseudoClass packets to contiguous grayscale scanlines.
         */
         quantum_type=IndexQuantum;
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             if (photometric != PHOTOMETRIC_PALETTE)
               quantum_type=GrayAlphaQuantum;
diff --git a/coders/tile.c b/coders/tile.c
index 224a171..1a2f281 100644
--- a/coders/tile.c
+++ b/coders/tile.c
@@ -117,8 +117,8 @@
   if (*image_info->filename == '\0')
     ThrowReaderException(OptionError,"MustSpecifyAnImageName");
   image->colorspace=tile_image->colorspace;
-  image->matte=tile_image->matte;
-  if (image->matte != MagickFalse)
+  image->alpha_trait=tile_image->alpha_trait;
+  if (image->alpha_trait == BlendPixelTrait)
     (void) SetImageBackgroundColor(image,exception);
   (void) CopyMagickString(image->filename,image_info->filename,MaxTextExtent);
   if (LocaleCompare(tile_image->magick,"PATTERN") == 0)
diff --git a/coders/txt.c b/coders/txt.c
index db31a0d..0ea542e 100644
--- a/coders/txt.c
+++ b/coders/txt.c
@@ -432,11 +432,11 @@
     image->depth=depth;
     LocaleLower(colorspace);
     i=(ssize_t) strlen(colorspace)-1;
-    image->matte=MagickFalse;
+    image->alpha_trait=UndefinedPixelTrait;
     if ((i > 0) && (colorspace[i] == 'a'))
       {
         colorspace[i]='\0';
-        image->matte=MagickTrue;
+        image->alpha_trait=BlendPixelTrait;
       }
     type=ParseCommandOption(MagickColorspaceOptions,MagickFalse,colorspace);
     if (type < 0)
@@ -455,7 +455,7 @@
         {
           case GRAYColorspace:
           {
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               {
                 count=(ssize_t) sscanf(text,"%ld,%ld: (%lf,%lf",&x_offset,
                   &y_offset,&pixel.red,&pixel.alpha);
@@ -471,7 +471,7 @@
           }
           case CMYKColorspace:
           {
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               {
                 count=(ssize_t) sscanf(text,"%ld,%ld: (%lf,%lf,%lf,%lf,%lf",
                   &x_offset,&y_offset,&pixel.red,&pixel.green,&pixel.blue,
@@ -484,7 +484,7 @@
           }
           default:
           {
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               {
                 count=(ssize_t) sscanf(text,"%ld,%ld: (%lf,%lf,%lf,%lf",
                   &x_offset,&y_offset,&pixel.red,&pixel.green,&pixel.blue,
@@ -675,7 +675,7 @@
       MagickColorspaceOptions,(ssize_t) image->colorspace),MaxTextExtent);
     LocaleLower(colorspace);
     image->depth=GetImageQuantumDepth(image,MagickTrue);
-    if (image->matte != MagickFalse)
+    if (image->alpha_trait == BlendPixelTrait)
       (void) ConcatenateMagickString(colorspace,"a",MaxTextExtent);
     (void) FormatLocaleString(buffer,MaxTextExtent,
       "# ImageMagick pixel enumeration: %.20g,%.20g,%.20g,%s\n",(double)
@@ -715,7 +715,7 @@
             ConcatenateColorComponent(&pixel,BlackPixelChannel,X11Compliance,
               tuple);
           }
-        if (pixel.matte != MagickFalse)
+        if (pixel.alpha_trait == BlendPixelTrait)
           {
             (void) ConcatenateMagickString(tuple,",",MaxTextExtent);
             ConcatenateColorComponent(&pixel,AlphaPixelChannel,X11Compliance,
diff --git a/coders/uil.c b/coders/uil.c
index cd1077d..6dd1945 100644
--- a/coders/uil.c
+++ b/coders/uil.c
@@ -230,7 +230,7 @@
         Convert DirectClass to PseudoClass image.
       */
       matte_image=(unsigned char *) NULL;
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         {
           /*
             Map all the transparent pixels.
diff --git a/coders/viff.c b/coders/viff.c
index 2f15101..11d8f7e 100644
--- a/coders/viff.c
+++ b/coders/viff.c
@@ -485,7 +485,7 @@
     /*
       Initialize image structure.
     */
-    image->matte=viff_info.number_data_bands == 4 ? MagickTrue : MagickFalse;
+    image->alpha_trait=viff_info.number_data_bands == 4 ? MagickTrue : MagickFalse;
     image->storage_class=
       (viff_info.number_data_bands < 3 ? PseudoClass : DirectClass);
     image->columns=viff_info.rows;
@@ -706,7 +706,7 @@
                   SetPixelBlue(image,image->colormap[(ssize_t)
                     GetPixelBlue(image,q)].blue,q);
                 }
-              SetPixelAlpha(image,image->matte != MagickFalse ?
+              SetPixelAlpha(image,image->alpha_trait == BlendPixelTrait ?
                 ScaleCharToQuantum(*(p+number_pixels*3)) : OpaqueAlpha,q);
               p++;
               q+=GetPixelChannels(image);
@@ -1010,7 +1010,7 @@
         /*
           Full color VIFF raster.
         */
-        viff_info.number_data_bands=image->matte ? 4UL : 3UL;
+        viff_info.number_data_bands=image->alpha_trait ? 4UL : 3UL;
         viff_info.color_space_model=VFF_CM_genericRGB;
         viff_info.data_storage_type=VFF_TYP_1_BYTE;
         packets=viff_info.number_data_bands*number_pixels;
@@ -1103,7 +1103,7 @@
             *q=ScaleQuantumToChar(GetPixelRed(image,p));
             *(q+number_pixels)=ScaleQuantumToChar(GetPixelGreen(image,p));
             *(q+number_pixels*2)=ScaleQuantumToChar(GetPixelBlue(image,p));
-            if (image->matte != MagickFalse)
+            if (image->alpha_trait == BlendPixelTrait)
               *(q+number_pixels*3)=ScaleQuantumToChar((Quantum)
                 (GetPixelAlpha(image,p)));
             p+=GetPixelChannels(image);
diff --git a/coders/webp.c b/coders/webp.c
index 49cfb23..e231600 100644
--- a/coders/webp.c
+++ b/coders/webp.c
@@ -163,7 +163,7 @@
     ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
   image->columns=(size_t) width;
   image->rows=(size_t) height;
-  image->matte=MagickTrue;
+  image->alpha_trait=BlendPixelTrait;
   p=pixels;
   for (y=0; y < (ssize_t) image->rows; y++)
   {
@@ -376,7 +376,7 @@
       *q++=ScaleQuantumToChar(GetPixelRed(image,p));
       *q++=ScaleQuantumToChar(GetPixelGreen(image,p));
       *q++=ScaleQuantumToChar(GetPixelBlue(image,p));
-      if (image->matte != MagickFalse)
+      if (image->alpha_trait == BlendPixelTrait)
         *q++=ScaleQuantumToChar(GetPixelAlpha(image,p));
       p+=GetPixelChannels(image);
     }
@@ -385,7 +385,7 @@
     if (status == MagickFalse)
       break;
   }
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     webp_status=WebPPictureImportRGB(&picture,pixels,3*picture.width);
   else
     webp_status=WebPPictureImportRGBA(&picture,pixels,4*picture.width);
diff --git a/coders/wmf.c b/coders/wmf.c
index 77ca0bd..76314ba 100644
--- a/coders/wmf.c
+++ b/coders/wmf.c
@@ -2863,7 +2863,7 @@
   {
     image->background_color = image_info->background_color;
     if (image->background_color.alpha != OpaqueAlpha)
-      image->matte = MagickTrue;
+      image->alpha_trait = MagickTrue;
     (void) SetImageBackgroundColor(image,exception);
   }
   /*
diff --git a/coders/xc.c b/coders/xc.c
index 914b912..2267abc 100644
--- a/coders/xc.c
+++ b/coders/xc.c
@@ -137,7 +137,7 @@
         }
     }
   SetImageColorspace(image,pixel.colorspace,exception);
-  image->matte=pixel.matte;
+  image->alpha_trait=pixel.alpha_trait;
   for (y=0; y < (ssize_t) image->rows; y++)
   {
     q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
diff --git a/coders/xcf.c b/coders/xcf.c
index cd82957..7dce50e 100644
--- a/coders/xcf.c
+++ b/coders/xcf.c
@@ -1063,7 +1063,7 @@
       if (image_type == GIMP_INDEXED)
         ThrowReaderException(CoderError,"ColormapTypeNotSupported");
   (void) SetImageBackgroundColor(image,exception);
-  image->matte=MagickTrue;
+  image->alpha_trait=BlendPixelTrait;
   /*
     Read properties.
   */
diff --git a/coders/xpm.c b/coders/xpm.c
index 940a419..dd21e10 100644
--- a/coders/xpm.c
+++ b/coders/xpm.c
@@ -376,7 +376,7 @@
     if (LocaleCompare(target,"none") == 0)
       {
         image->storage_class=DirectClass;
-        image->matte=MagickTrue;
+        image->alpha_trait=BlendPixelTrait;
       }
     status=QueryColorCompliance(target,AllCompliance,&image->colormap[j],
       exception);
@@ -657,7 +657,7 @@
   if (picon->storage_class == PseudoClass)
     {
       (void) CompressImageColormap(picon,exception);
-      if (picon->matte != MagickFalse)
+      if (picon->alpha_trait == BlendPixelTrait)
         transparent=MagickTrue;
     }
   else
@@ -665,7 +665,7 @@
       /*
         Convert DirectClass to PseudoClass picon.
       */
-      if (picon->matte != MagickFalse)
+      if (picon->alpha_trait == BlendPixelTrait)
         {
           /*
             Map all the transparent pixels.
@@ -881,7 +881,7 @@
   if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse)
     (void) TransformImageColorspace(image,sRGBColorspace,exception);
   opacity=(-1);
-  if (image->matte == MagickFalse)
+  if (image->alpha_trait != BlendPixelTrait)
     {
       if ((image->storage_class == DirectClass) || (image->colors > 256))
         (void) SetImageType(image,PaletteType,exception);
diff --git a/coders/ycbcr.c b/coders/ycbcr.c
index a983d0e..9056d9c 100644
--- a/coders/ycbcr.c
+++ b/coders/ycbcr.c
@@ -175,7 +175,7 @@
   if (LocaleCompare(image_info->magick,"YCbCrA") == 0)
     {
       quantum_type=RGBAQuantum;
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
     }
   if (image_info->number_scenes != 0)
     while (image->scene < image_info->scene)
@@ -248,7 +248,7 @@
                 SetPixelRed(image,GetPixelRed(canvas_image,p),q);
                 SetPixelGreen(image,GetPixelGreen(canvas_image,p),q);
                 SetPixelBlue(image,GetPixelBlue(canvas_image,p),q);
-                if (image->matte != MagickFalse)
+                if (image->alpha_trait == BlendPixelTrait)
                   SetPixelAlpha(image,GetPixelAlpha(canvas_image,p),q);
                 p+=GetPixelChannels(canvas_image);
                 q+=GetPixelChannels(image);
@@ -288,7 +288,7 @@
           }
         for (y=0; y < (ssize_t) image->extract_info.height; y++)
         {
-          for (i=0; i < (image->matte != MagickFalse ? 4 : 3); i++)
+          for (i=0; i < (image->alpha_trait == BlendPixelTrait ? 4 : 3); i++)
           {
             if (count != (ssize_t) length)
               {
@@ -499,7 +499,7 @@
             if (status == MagickFalse)
               break;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             for (y=0; y < (ssize_t) image->extract_info.height; y++)
             {
@@ -747,7 +747,7 @@
             if (status == MagickFalse)
               break;
           }
-        if (image->matte != MagickFalse)
+        if (image->alpha_trait == BlendPixelTrait)
           {
             (void) CloseBlob(image);
             AppendImageFormat("A",image->filename);
@@ -1006,7 +1006,7 @@
   if (LocaleCompare(image_info->magick,"YCbCrA") == 0)
     {
       quantum_type=RGBAQuantum;
-      image->matte=MagickTrue;
+      image->alpha_trait=BlendPixelTrait;
     }
   scene=0;
   do
@@ -1017,7 +1017,7 @@
     if (image->colorspace != YCbCrColorspace)
       (void) TransformImageColorspace(image,YCbCrColorspace,exception);
     if ((LocaleCompare(image_info->magick,"YCbCrA") == 0) &&
-        (image->matte == MagickFalse))
+        (image->alpha_trait != BlendPixelTrait))
       (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
     quantum_info=AcquireQuantumInfo(image_info,image);
     if (quantum_info == (QuantumInfo *) NULL)