diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp
index 260ccc8..1856ae2 100644
--- a/Magick++/lib/Image.cpp
+++ b/Magick++/lib/Image.cpp
@@ -495,8 +495,10 @@
 {
   ExceptionInfo exceptionInfo;
   GetExceptionInfo( &exceptionInfo );
+  PushPixelComponentMap( image(), channel_ );
   MagickCore::Image* newImage =
-    BlurImageChannel( image(), channel_,radius_, sigma_, &exceptionInfo);
+    BlurImage( image(), radius_, sigma_, &exceptionInfo);
+  PopPixelComponentMap( image() );
   replaceImage( newImage );
   throwException( exceptionInfo );
   (void) DestroyExceptionInfo( &exceptionInfo );
@@ -1173,8 +1175,10 @@
 {
   ExceptionInfo exceptionInfo;
   GetExceptionInfo( &exceptionInfo );
+  PushPixelComponentMap( image(), channel_ );
   MagickCore::Image* newImage =
-    GaussianBlurImageChannel( image(), channel_, width_, sigma_, &exceptionInfo );
+    GaussianBlurImage( image(), width_, sigma_, &exceptionInfo );
+  PopPixelComponentMap( image() );
   replaceImage( newImage );
   throwException( exceptionInfo );
   (void) DestroyExceptionInfo( &exceptionInfo );
@@ -1547,10 +1551,11 @@
   ExceptionInfo exceptionInfo;
   GetExceptionInfo( &exceptionInfo );
   modifyImage();
-  (void) RandomThresholdImageChannel( image(),
-                                      channel_,
+  PushPixelComponentMap( image(), channel_);
+  (void) RandomThresholdImage( image(),
                                       static_cast<std::string>(thresholds_).c_str(),
                                       &exceptionInfo );
+  PopPixelComponentMap( image() );
   throwImageException();
   (void) DestroyExceptionInfo( &exceptionInfo );
 }
@@ -1863,12 +1868,13 @@
 {
   ExceptionInfo exceptionInfo;
   GetExceptionInfo( &exceptionInfo );
+  PushPixelComponentMap( image(), channel_ );
   MagickCore::Image* newImage =
-    SharpenImageChannel( image(),
-                         channel_,
+    SharpenImage( image(),
                          radius_,
                          sigma_,
                          &exceptionInfo );
+  PopPixelComponentMap( image() );
   replaceImage( newImage );
   throwException( exceptionInfo );
   (void) DestroyExceptionInfo( &exceptionInfo );
@@ -2123,14 +2129,15 @@
 {
   ExceptionInfo exceptionInfo;
   GetExceptionInfo( &exceptionInfo );
+  PushPixelComponentMap( image(), channel_ );
   MagickCore::Image* newImage =
-    UnsharpMaskImageChannel( image(),
-                             channel_,
+    UnsharpMaskImage( image(),
                              radius_,
                              sigma_,
                              amount_,
                              threshold_,
                              &exceptionInfo );
+  PopPixelComponentMap( image() );
   replaceImage( newImage );
   throwException( exceptionInfo );
   (void) DestroyExceptionInfo( &exceptionInfo );
diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h
index 1356db2..e6cf742 100644
--- a/Magick++/lib/Magick++/Include.h
+++ b/Magick++/lib/Magick++/Include.h
@@ -548,7 +548,7 @@
   using MagickCore::BlobToImage;
   using MagickCore::BlobWarning;
   using MagickCore::BlurImage;
-  using MagickCore::BlurImageChannel;
+  using MagickCore::BlurImage;
   using MagickCore::BorderImage;
   using MagickCore::CacheError;
   using MagickCore::CacheFatalError;
@@ -711,7 +711,7 @@
   using MagickCore::GammaImage;
   using MagickCore::GammaImage;
   using MagickCore::GaussianBlurImage;
-  using MagickCore::GaussianBlurImageChannel;
+  using MagickCore::GaussianBlurImage;
   using MagickCore::GetAffineMatrix;
   using MagickCore::GetAuthenticMetacontent;
   using MagickCore::GetBlobSize;
@@ -823,7 +823,7 @@
   using MagickCore::QueueAuthenticPixels;
   using MagickCore::QueueCacheViewAuthenticPixels;
   using MagickCore::RaiseImage;
-  using MagickCore::RandomThresholdImageChannel;
+  using MagickCore::RandomThresholdImage;
   using MagickCore::ReadImage;
   using MagickCore::RectangleInfo;
   using MagickCore::RegisterMagickInfo;
@@ -867,7 +867,7 @@
   using MagickCore::SetImageVirtualPixelMethod;
   using MagickCore::ShadeImage;
   using MagickCore::SharpenImage;
-  using MagickCore::SharpenImageChannel;
+  using MagickCore::SharpenImage;
   using MagickCore::ShaveImage;
   using MagickCore::ShearImage;
   using MagickCore::SigmoidalContrastImage;
@@ -902,7 +902,7 @@
   using MagickCore::UndefinedRegistryType;
   using MagickCore::UnregisterMagickInfo;
   using MagickCore::UnsharpMaskImage;
-  using MagickCore::UnsharpMaskImageChannel;
+  using MagickCore::UnsharpMaskImage;
   using MagickCore::CacheView;
   using MagickCore::WaveImage;
   using MagickCore::WidthValue;
diff --git a/MagickCore/composite.c b/MagickCore/composite.c
index 04cb896..eea733b 100644
--- a/MagickCore/composite.c
+++ b/MagickCore/composite.c
@@ -79,30 +79,25 @@
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   C o m p o s i t e I m a g e C h a n n e l                                 %
+%   C o m p o s i t e I m a g e                                               %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  CompositeImageChannel() returns the second image composited onto the first
+%  CompositeImage() returns the second image composited onto the first
 %  at the specified offset, using the specified composite method.
 %
-%  The format of the CompositeImageChannel method is:
+%  The format of the CompositeImage method is:
 %
 %      MagickBooleanType CompositeImage(Image *image,
 %        const CompositeOperator compose,Image *composite_image,
 %        const ssize_t x_offset,const ssize_t y_offset)
-%      MagickBooleanType CompositeImageChannel(Image *image,
-%        const ChannelType channel,const CompositeOperator compose,
-%        Image *composite_image,const ssize_t x_offset,const ssize_t y_offset)
 %
 %  A description of each parameter follows:
 %
 %    o image: the destination image, modified by he composition
 %
-%    o channel: the channel.
-%
 %    o compose: This operator affects how the composite is applied to
 %      the image.  The operators and how they are utilized are listed here
 %      http://www.w3.org/TR/SVG12/#compositing.
@@ -334,7 +329,7 @@
 }
 
 static inline void CompositeDarken(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     gamma;
@@ -372,8 +367,7 @@
 }
 
 static inline void CompositeDarkenIntensity(const Image *image,
-  const PixelInfo *p,const PixelInfo *q,const ChannelType channel,
-  PixelInfo *composite)
+  const PixelInfo *p,const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -420,7 +414,7 @@
 }
 
 static inline void CompositeDifference(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -478,7 +472,7 @@
 }
 
 static inline void CompositeDivide(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -530,7 +524,7 @@
 }
 
 static inline void CompositeExclusion(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     gamma,
@@ -684,7 +678,7 @@
 }
 
 static inline void CompositeLighten(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     gamma;
@@ -722,8 +716,7 @@
 }
 
 static inline void CompositeLightenIntensity(const Image *image,
-  const PixelInfo *p,const PixelInfo *q,const ChannelType channel,
-  PixelInfo *composite)
+  const PixelInfo *p,const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -885,8 +878,7 @@
 }
 
 static inline void CompositeMathematics(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel, const GeometryInfo *args,
-  PixelInfo *composite)
+  const PixelInfo *q,const GeometryInfo *args,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -932,7 +924,7 @@
 }
 
 static inline void CompositePlus(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   /*
     NOTE: "Plus" does not use 'over' alpha-blending but uses a special
@@ -983,7 +975,7 @@
 }
 
 static inline void CompositeMinus(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -1033,7 +1025,7 @@
 }
 
 static inline void CompositeModulusAdd(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -1083,8 +1075,7 @@
 }
 
 static inline void CompositeModulusSubtract(const Image *image,
-  const PixelInfo *p,const PixelInfo *q, const ChannelType channel,
-  PixelInfo *composite)
+  const PixelInfo *p,const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -1128,7 +1119,7 @@
 }
 
 static inline void CompositeMultiply(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -1286,7 +1277,7 @@
 }
 
 static inline void CompositeScreen(const Image *image,const PixelInfo *p,
-  const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+  const PixelInfo *q,PixelInfo *composite)
 {
   MagickRealType
     Da,
@@ -1555,18 +1546,6 @@
   const CompositeOperator compose,const Image *composite_image,
   const ssize_t x_offset,const ssize_t y_offset)
 {
-  MagickBooleanType
-    status;
-
-  status=CompositeImageChannel(image,DefaultChannels,compose,composite_image,
-    x_offset,y_offset);
-  return(status);
-}
-
-MagickExport MagickBooleanType CompositeImageChannel(Image *image,
-  const ChannelType channel,const CompositeOperator compose,
-  const Image *composite_image,const ssize_t x_offset,const ssize_t y_offset)
-{
 #define CompositeImageTag  "Composite/Image"
 
   CacheView
@@ -2395,86 +2374,83 @@
         }
         case PlusCompositeOp:
         {
-          CompositePlus(image,&source,&destination,channel,&composite);
+          CompositePlus(image,&source,&destination,&composite);
           break;
         }
         case MinusDstCompositeOp:
         {
-          CompositeMinus(image,&source,&destination,channel,&composite);
+          CompositeMinus(image,&source,&destination,&composite);
           break;
         }
         case MinusSrcCompositeOp:
         {
-          CompositeMinus(image,&destination,&source,channel,&composite);
+          CompositeMinus(image,&destination,&source,&composite);
           break;
         }
         case ModulusAddCompositeOp:
         {
-          CompositeModulusAdd(image,&source,&destination,channel,&composite);
+          CompositeModulusAdd(image,&source,&destination,&composite);
           break;
         }
         case ModulusSubtractCompositeOp:
         {
-          CompositeModulusSubtract(image,&source,&destination,channel,
-            &composite);
+          CompositeModulusSubtract(image,&source,&destination,&composite);
           break;
         }
         case DifferenceCompositeOp:
         {
-          CompositeDifference(image,&source,&destination,channel,&composite);
+          CompositeDifference(image,&source,&destination,&composite);
           break;
         }
         case ExclusionCompositeOp:
         {
-          CompositeExclusion(image,&source,&destination,channel,&composite);
+          CompositeExclusion(image,&source,&destination,&composite);
           break;
         }
         case MultiplyCompositeOp:
         {
-          CompositeMultiply(image,&source,&destination,channel,&composite);
+          CompositeMultiply(image,&source,&destination,&composite);
           break;
         }
         case ScreenCompositeOp:
         {
-          CompositeScreen(image,&source,&destination,channel,&composite);
+          CompositeScreen(image,&source,&destination,&composite);
           break;
         }
         case DivideDstCompositeOp:
         {
-          CompositeDivide(image,&source,&destination,channel,&composite);
+          CompositeDivide(image,&source,&destination,&composite);
           break;
         }
         case DivideSrcCompositeOp:
         {
-          CompositeDivide(image,&destination,&source,channel,&composite);
+          CompositeDivide(image,&destination,&source,&composite);
           break;
         }
         case DarkenCompositeOp:
         {
-          CompositeDarken(image,&source,&destination,channel,&composite);
+          CompositeDarken(image,&source,&destination,&composite);
           break;
         }
         case LightenCompositeOp:
         {
-          CompositeLighten(image,&source,&destination,channel,&composite);
+          CompositeLighten(image,&source,&destination,&composite);
           break;
         }
         case DarkenIntensityCompositeOp:
         {
-          CompositeDarkenIntensity(image,&source,&destination,channel,
-            &composite);
+          CompositeDarkenIntensity(image,&source,&destination,&composite);
           break;
         }
         case LightenIntensityCompositeOp:
         {
-          CompositeLightenIntensity(image,&source,&destination,channel,
-            &composite);
+          CompositeLightenIntensity(image,&source,&destination,&composite);
           break;
         }
         case MathematicsCompositeOp:
         {
-          CompositeMathematics(image,&source,&destination,channel,
-            &geometry_info,&composite);
+          CompositeMathematics(image,&source,&destination,&geometry_info,
+            &composite);
           break;
         }
         case ColorDodgeCompositeOp:
@@ -2730,7 +2706,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_CompositeImageChannel)
+  #pragma omp critical (MagickCore_CompositeImage)
 #endif
         proceed=SetImageProgress(image,CompositeImageTag,progress++,
           image->rows);
diff --git a/MagickCore/composite.h b/MagickCore/composite.h
index 6808094..19dea37 100644
--- a/MagickCore/composite.h
+++ b/MagickCore/composite.h
@@ -97,8 +97,6 @@
 extern MagickExport MagickBooleanType
   CompositeImage(Image *,const CompositeOperator,const Image *,const ssize_t,
     const ssize_t),
-  CompositeImageChannel(Image *,const ChannelType,const CompositeOperator,
-    const Image *,const ssize_t,const ssize_t),
   TextureImage(Image *,const Image *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 8a10c0a..826d987 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -106,16 +106,11 @@
 %
 %      Image *AdaptiveBlurImage(const Image *image,const double radius,
 %        const double sigma,ExceptionInfo *exception)
-%      Image *AdaptiveBlurImageChannel(const Image *image,
-%        const ChannelType channel,double radius,const double sigma,
-%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -125,17 +120,6 @@
 %
 */
 
-MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius,
-  const double sigma,ExceptionInfo *exception)
-{
-  Image
-    *blur_image;
-
-  blur_image=AdaptiveBlurImageChannel(image,DefaultChannels,radius,sigma,
-    exception);
-  return(blur_image);
-}
-
 MagickExport MagickBooleanType AdaptiveLevelImage(Image *image,
   const char *levels)
 {
@@ -180,9 +164,8 @@
   return(status);
 }
 
-MagickExport Image *AdaptiveBlurImageChannel(const Image *image,
-  const ChannelType channel,const double radius,const double sigma,
-  ExceptionInfo *exception)
+MagickExport Image *AdaptiveBlurImage(const Image *image,
+  const double radius,const double sigma,ExceptionInfo *exception)
 {
 #define AdaptiveBlurImageTag  "Convolve/Image"
 #define MagickSigma  (fabs(sigma) <= MagickEpsilon ? 1.0 : sigma)
@@ -418,7 +401,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_AdaptiveBlurImageChannel)
+  #pragma omp critical (MagickCore_AdaptiveBlurImage)
 #endif
         proceed=SetImageProgress(image,AdaptiveBlurImageTag,progress++,
           image->rows);
@@ -460,16 +443,11 @@
 %
 %      Image *AdaptiveSharpenImage(const Image *image,const double radius,
 %        const double sigma,ExceptionInfo *exception)
-%      Image *AdaptiveSharpenImageChannel(const Image *image,
-%        const ChannelType channel,double radius,const double sigma,
-%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -478,22 +456,9 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
 MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius,
   const double sigma,ExceptionInfo *exception)
 {
-  Image
-    *sharp_image;
-
-  sharp_image=AdaptiveSharpenImageChannel(image,DefaultChannels,radius,sigma,
-    exception);
-  return(sharp_image);
-}
-
-MagickExport Image *AdaptiveSharpenImageChannel(const Image *image,
-  const ChannelType channel,const double radius,const double sigma,
-  ExceptionInfo *exception)
-{
 #define AdaptiveSharpenImageTag  "Convolve/Image"
 #define MagickSigma  (fabs(sigma) <= MagickEpsilon ? 1.0 : sigma)
 
@@ -728,7 +693,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_AdaptiveSharpenImageChannel)
+  #pragma omp critical (MagickCore_AdaptiveSharpenImage)
 #endif
         proceed=SetImageProgress(image,AdaptiveSharpenImageTag,progress++,
           image->rows);
@@ -773,15 +738,11 @@
 %
 %      Image *BlurImage(const Image *image,const double radius,
 %        const double sigma,ExceptionInfo *exception)
-%      Image *BlurImageChannel(const Image *image,const ChannelType channel,
-%        const double radius,const double sigma,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -791,16 +752,6 @@
 %
 */
 
-MagickExport Image *BlurImage(const Image *image,const double radius,
-  const double sigma,ExceptionInfo *exception)
-{
-  Image
-    *blur_image;
-
-  blur_image=BlurImageChannel(image,DefaultChannels,radius,sigma,exception);
-  return(blur_image);
-}
-
 static double *GetBlurKernel(const size_t width,const double sigma)
 {
   double
@@ -836,9 +787,8 @@
   return(kernel);
 }
 
-MagickExport Image *BlurImageChannel(const Image *image,
-  const ChannelType channel,const double radius,const double sigma,
-  ExceptionInfo *exception)
+MagickExport Image *BlurImage(const Image *image,const double radius,
+  const double sigma,ExceptionInfo *exception)
 {
 #define BlurImageTag  "Blur/Image"
 
@@ -973,7 +923,8 @@
       pixel=bias;
       k=kernel;
       kernel_pixels=p;
-      if (((GetPixelAlphaTraits(image) & ActivePixelTrait) == 0) || (image->matte == MagickFalse))
+      if (((GetPixelAlphaTraits(image) & ActivePixelTrait) == 0) ||
+          (image->matte == MagickFalse))
         {
           for (i=0; i < (ssize_t) width; i++)
           {
@@ -1061,7 +1012,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_BlurImageChannel)
+  #pragma omp critical (MagickCore_BlurImage)
 #endif
         proceed=SetImageProgress(image,BlurImageTag,progress++,blur_image->rows+
           blur_image->columns);
@@ -1117,7 +1068,8 @@
       pixel=bias;
       k=kernel;
       kernel_pixels=p;
-      if (((GetPixelAlphaTraits(image) & ActivePixelTrait) == 0) || (blur_image->matte == MagickFalse))
+      if (((GetPixelAlphaTraits(image) & ActivePixelTrait) == 0) ||
+          (blur_image->matte == MagickFalse))
         {
           for (i=0; i < (ssize_t) width; i++)
           {
@@ -1205,7 +1157,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_BlurImageChannel)
+  #pragma omp critical (MagickCore_BlurImage)
 #endif
         proceed=SetImageProgress(blur_image,BlurImageTag,progress++,
           blur_image->rows+blur_image->columns);
@@ -1239,15 +1191,10 @@
 %
 %      Image *ConvolveImage(const Image *image,const size_t order,
 %        const double *kernel,ExceptionInfo *exception)
-%      Image *ConvolveImageChannel(const Image *image,const ChannelType channel,
-%        const size_t order,const double *kernel,ExceptionInfo *exception)
-%
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o order: the number of columns and rows in the filter kernel.
 %
 %    o kernel: An array of double representing the convolution kernel.
@@ -1255,22 +1202,9 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
 MagickExport Image *ConvolveImage(const Image *image,const size_t order,
   const double *kernel,ExceptionInfo *exception)
 {
-  Image
-    *convolve_image;
-
-  convolve_image=ConvolveImageChannel(image,DefaultChannels,order,kernel,
-    exception);
-  return(convolve_image);
-}
-
-MagickExport Image *ConvolveImageChannel(const Image *image,
-  const ChannelType channel,const size_t order,const double *kernel,
-  ExceptionInfo *exception)
-{
 #define ConvolveImageTag  "Convolve/Image"
 
   CacheView
@@ -1541,7 +1475,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_ConvolveImageChannel)
+  #pragma omp critical (MagickCore_ConvolveImage)
 #endif
         proceed=SetImageProgress(image,ConvolveImageTag,progress++,image->rows);
         if (proceed == MagickFalse)
@@ -2029,33 +1963,18 @@
 %
 %      Image *FilterImage(const Image *image,const KernelInfo *kernel,
 %        ExceptionInfo *exception)
-%      Image *FilterImageChannel(const Image *image,const ChannelType channel,
-%        const KernelInfo *kernel,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o kernel: the filtering kernel.
 %
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
-MagickExport Image *FilterImage(const Image *image,const KernelInfo *kernel,
-  ExceptionInfo *exception)
-{
-  Image
-    *filter_image;
-
-  filter_image=FilterImageChannel(image,DefaultChannels,kernel,exception);
-  return(filter_image);
-}
-
-MagickExport Image *FilterImageChannel(const Image *image,
-  const ChannelType channel,const KernelInfo *kernel,ExceptionInfo *exception)
+MagickExport Image *FilterImage(const Image *image,
+  const KernelInfo *kernel,ExceptionInfo *exception)
 {
 #define FilterImageTag  "Filter/Image"
 
@@ -2307,7 +2226,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_FilterImageChannel)
+  #pragma omp critical (MagickCore_FilterImage)
 #endif
         proceed=SetImageProgress(image,FilterImageTag,progress++,image->rows);
         if (proceed == MagickFalse)
@@ -2342,16 +2261,11 @@
 %
 %      Image *GaussianBlurImage(const Image *image,onst double radius,
 %        const double sigma,ExceptionInfo *exception)
-%      Image *GaussianBlurImageChannel(const Image *image,
-%        const ChannelType channel,const double radius,const double sigma,
-%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -2360,21 +2274,8 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
-MagickExport Image *GaussianBlurImage(const Image *image,const double radius,
-  const double sigma,ExceptionInfo *exception)
-{
-  Image
-    *blur_image;
-
-  blur_image=GaussianBlurImageChannel(image,DefaultChannels,radius,sigma,
-    exception);
-  return(blur_image);
-}
-
-MagickExport Image *GaussianBlurImageChannel(const Image *image,
-  const ChannelType channel,const double radius,const double sigma,
-  ExceptionInfo *exception)
+MagickExport Image *GaussianBlurImage(const Image *image,
+  const double radius,const double sigma,ExceptionInfo *exception)
 {
   double
     *kernel;
@@ -2411,7 +2312,7 @@
       kernel[i++]=(double) (exp(-((double) u*u+v*v)/(2.0*MagickSigma*
         MagickSigma))/(2.0*MagickPI*MagickSigma*MagickSigma));
   }
-  blur_image=ConvolveImageChannel(image,channel,width,kernel,exception);
+  blur_image=ConvolveImage(image,width,kernel,exception);
   kernel=(double *) RelinquishMagickMemory(kernel);
   return(blur_image);
 }
@@ -2439,17 +2340,11 @@
 %
 %    Image *MotionBlurImage(const Image *image,const double radius,
 %      const double sigma,const double angle,ExceptionInfo *exception)
-%    Image *MotionBlurImageChannel(const Image *image,const ChannelType channel,
-%      const double radius,const double sigma,const double angle,
-%      ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
-%    o radius: the radius of the Gaussian, in pixels, not counting the center
 %    o radius: the radius of the Gaussian, in pixels, not counting
 %      the center pixel.
 %
@@ -2489,20 +2384,9 @@
   return(kernel);
 }
 
-MagickExport Image *MotionBlurImage(const Image *image,const double radius,
-  const double sigma,const double angle,ExceptionInfo *exception)
-{
-  Image
-    *motion_blur;
-
-  motion_blur=MotionBlurImageChannel(image,DefaultChannels,radius,sigma,angle,
-    exception);
-  return(motion_blur);
-}
-
-MagickExport Image *MotionBlurImageChannel(const Image *image,
-  const ChannelType channel,const double radius,const double sigma,
-  const double angle,ExceptionInfo *exception)
+MagickExport Image *MotionBlurImage(const Image *image,
+  const double radius,const double sigma,const double angle,
+  ExceptionInfo *exception)
 {
   CacheView
     *blur_view,
@@ -2700,7 +2584,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_MotionBlurImageChannel)
+  #pragma omp critical (MagickCore_MotionBlurImage)
 #endif
         proceed=SetImageProgress(image,BlurImageTag,progress++,image->rows);
         if (proceed == MagickFalse)
@@ -3257,33 +3141,18 @@
 %
 %    Image *RadialBlurImage(const Image *image,const double angle,
 %      ExceptionInfo *exception)
-%    Image *RadialBlurImageChannel(const Image *image,const ChannelType channel,
-%      const double angle,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o angle: the angle of the radial blur.
 %
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
-MagickExport Image *RadialBlurImage(const Image *image,const double angle,
-  ExceptionInfo *exception)
-{
-  Image
-    *blur_image;
-
-  blur_image=RadialBlurImageChannel(image,DefaultChannels,angle,exception);
-  return(blur_image);
-}
-
-MagickExport Image *RadialBlurImageChannel(const Image *image,
-  const ChannelType channel,const double angle,ExceptionInfo *exception)
+MagickExport Image *RadialBlurImage(const Image *image,
+  const double angle,ExceptionInfo *exception)
 {
   CacheView
     *blur_view,
@@ -3513,7 +3382,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_RadialBlurImageChannel)
+  #pragma omp critical (MagickCore_RadialBlurImage)
 #endif
         proceed=SetImageProgress(image,BlurImageTag,progress++,image->rows);
         if (proceed == MagickFalse)
@@ -3548,16 +3417,11 @@
 %
 %      Image *SelectiveBlurImage(const Image *image,const double radius,
 %        const double sigma,const double threshold,ExceptionInfo *exception)
-%      Image *SelectiveBlurImageChannel(const Image *image,
-%        const ChannelType channel,const double radius,const double sigma,
-%        const double threshold,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -3569,21 +3433,9 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
-MagickExport Image *SelectiveBlurImage(const Image *image,const double radius,
-  const double sigma,const double threshold,ExceptionInfo *exception)
-{
-  Image
-    *blur_image;
-
-  blur_image=SelectiveBlurImageChannel(image,DefaultChannels,radius,sigma,
-    threshold,exception);
-  return(blur_image);
-}
-
-MagickExport Image *SelectiveBlurImageChannel(const Image *image,
-  const ChannelType channel,const double radius,const double sigma,
-  const double threshold,ExceptionInfo *exception)
+MagickExport Image *SelectiveBlurImage(const Image *image,
+  const double radius,const double sigma,const double threshold,
+  ExceptionInfo *exception)
 {
 #define SelectiveBlurImageTag  "SelectiveBlur/Image"
 
@@ -3896,7 +3748,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_SelectiveBlurImageChannel)
+  #pragma omp critical (MagickCore_SelectiveBlurImage)
 #endif
         proceed=SetImageProgress(image,SelectiveBlurImageTag,progress++,
           image->rows);
@@ -4143,15 +3995,11 @@
 %
 %    Image *SharpenImage(const Image *image,const double radius,
 %      const double sigma,ExceptionInfo *exception)
-%    Image *SharpenImageChannel(const Image *image,const ChannelType channel,
-%      const double radius,const double sigma,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -4160,21 +4008,9 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
 MagickExport Image *SharpenImage(const Image *image,const double radius,
   const double sigma,ExceptionInfo *exception)
 {
-  Image
-    *sharp_image;
-
-  sharp_image=SharpenImageChannel(image,DefaultChannels,radius,sigma,exception);
-  return(sharp_image);
-}
-
-MagickExport Image *SharpenImageChannel(const Image *image,
-  const ChannelType channel,const double radius,const double sigma,
-  ExceptionInfo *exception)
-{
   double
     *kernel,
     normalize;
@@ -4217,7 +4053,7 @@
     }
   }
   kernel[i/2]=(double) ((-2.0)*normalize);
-  sharp_image=ConvolveImageChannel(image,channel,width,kernel,exception);
+  sharp_image=ConvolveImage(image,width,kernel,exception);
   kernel=(double *) RelinquishMagickMemory(kernel);
   return(sharp_image);
 }
@@ -4384,16 +4220,11 @@
 %
 %      Image *StatisticImage(const Image *image,const StatisticType type,
 %        const size_t width,const size_t height,ExceptionInfo *exception)
-%      Image *StatisticImageChannel(const Image *image,
-%        const ChannelType channel,const StatisticType type,
-%        const size_t width,const size_t height,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the image channel.
-%
 %    o type: the statistic type (median, mode, etc.).
 %
 %    o width: the width of the pixel neighborhood.
@@ -5010,18 +4841,6 @@
 MagickExport Image *StatisticImage(const Image *image,const StatisticType type,
   const size_t width,const size_t height,ExceptionInfo *exception)
 {
-  Image
-    *statistic_image;
-
-  statistic_image=StatisticImageChannel(image,DefaultChannels,type,width,
-    height,exception);
-  return(statistic_image);
-}
-
-MagickExport Image *StatisticImageChannel(const Image *image,
-  const ChannelType channel,const StatisticType type,const size_t width,
-  const size_t height,ExceptionInfo *exception)
-{
 #define StatisticWidth \
   (width == 0 ? GetOptimalKernelWidth2D((double) width,0.5) : width)
 #define StatisticHeight \
@@ -5243,16 +5062,11 @@
 %    Image *UnsharpMaskImage(const Image *image,const double radius,
 %      const double sigma,const double amount,const double threshold,
 %      ExceptionInfo *exception)
-%    Image *UnsharpMaskImageChannel(const Image *image,
-%      const ChannelType channel,const double radius,const double sigma,
-%      const double amount,const double threshold,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -5266,22 +5080,9 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
-MagickExport Image *UnsharpMaskImage(const Image *image,const double radius,
-  const double sigma,const double amount,const double threshold,
-  ExceptionInfo *exception)
-{
-  Image
-    *sharp_image;
-
-  sharp_image=UnsharpMaskImageChannel(image,DefaultChannels,radius,sigma,amount,
-    threshold,exception);
-  return(sharp_image);
-}
-
-MagickExport Image *UnsharpMaskImageChannel(const Image *image,
-  const ChannelType channel,const double radius,const double sigma,
-  const double amount,const double threshold,ExceptionInfo *exception)
+MagickExport Image *UnsharpMaskImage(const Image *image,
+  const double radius,const double sigma,const double amount,
+  const double threshold,ExceptionInfo *exception)
 {
 #define SharpenImageTag  "Sharpen/Image"
 
@@ -5312,7 +5113,7 @@
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   assert(exception != (ExceptionInfo *) NULL);
-  unsharp_image=BlurImageChannel(image,channel,radius,sigma,exception);
+  unsharp_image=BlurImage(image,radius,sigma,exception);
   if (unsharp_image == (Image *) NULL)
     return((Image *) NULL);
   quantum_threshold=(MagickRealType) QuantumRange*threshold;
@@ -5429,7 +5230,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_UnsharpMaskImageChannel)
+  #pragma omp critical (MagickCore_UnsharpMaskImage)
 #endif
         proceed=SetImageProgress(image,SharpenImageTag,progress++,image->rows);
         if (proceed == MagickFalse)
diff --git a/MagickCore/effect.h b/MagickCore/effect.h
index d41ce88..d76cc7f 100644
--- a/MagickCore/effect.h
+++ b/MagickCore/effect.h
@@ -73,53 +73,29 @@
 
 extern MagickExport Image
   *AdaptiveBlurImage(const Image *,const double,const double,ExceptionInfo *),
-  *AdaptiveBlurImageChannel(const Image *,const ChannelType,const double,
-    const double,ExceptionInfo *),
   *AdaptiveSharpenImage(const Image *,const double,const double,
      ExceptionInfo *),
-  *AdaptiveSharpenImageChannel(const Image *,const ChannelType,const double,
-    const double,ExceptionInfo *),
   *BlurImage(const Image *,const double,const double,ExceptionInfo *),
-  *BlurImageChannel(const Image *,const ChannelType,const double,const double,
-    ExceptionInfo *),
   *ConvolveImage(const Image *,const size_t,const double *,ExceptionInfo *),
-  *ConvolveImageChannel(const Image *,const ChannelType,const size_t,
-    const double *,ExceptionInfo *),
   *DespeckleImage(const Image *,ExceptionInfo *),
   *EdgeImage(const Image *,const double,ExceptionInfo *),
   *EmbossImage(const Image *,const double,const double,ExceptionInfo *),
   *FilterImage(const Image *,const KernelInfo *,ExceptionInfo *),
-  *FilterImageChannel(const Image *,const ChannelType,const KernelInfo *,
-     ExceptionInfo *),
   *GaussianBlurImage(const Image *,const double,const double,ExceptionInfo *),
-  *GaussianBlurImageChannel(const Image *,const ChannelType,const double,
-    const double,ExceptionInfo *),
   *MotionBlurImage(const Image *,const double,const double,const double,
     ExceptionInfo *),
-  *MotionBlurImageChannel(const Image *,const ChannelType,const double,
-    const double,const double,ExceptionInfo *),
   *PreviewImage(const Image *,const PreviewType,ExceptionInfo *),
   *RadialBlurImage(const Image *,const double,ExceptionInfo *),
-  *RadialBlurImageChannel(const Image *,const ChannelType,const double,
-    ExceptionInfo *),
   *SelectiveBlurImage(const Image *,const double,const double,const double,
     ExceptionInfo *),
-  *SelectiveBlurImageChannel(const Image *,const ChannelType,const double,
-    const double,const double,ExceptionInfo *),
   *ShadeImage(const Image *,const MagickBooleanType,const double,const double,
     ExceptionInfo *),
   *SharpenImage(const Image *,const double,const double,ExceptionInfo *),
-  *SharpenImageChannel(const Image *,const ChannelType,const double,
-    const double,ExceptionInfo *),
   *SpreadImage(const Image *,const double,ExceptionInfo *),
   *StatisticImage(const Image *,const StatisticType,const size_t,const size_t,
     ExceptionInfo *),
-  *StatisticImageChannel(const Image *,const ChannelType,const StatisticType,
-    const size_t,const size_t,ExceptionInfo *),
   *UnsharpMaskImage(const Image *,const double,const double,const double,
-    const double,ExceptionInfo *),
-  *UnsharpMaskImageChannel(const Image *,const ChannelType,const double,
-    const double,const double,const double,ExceptionInfo *);
+    const double,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index 98e53d4..923495b 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -4188,7 +4188,9 @@
       }
   }
   border_view=DestroyCacheView(border_view);
-  shadow_image=BlurImageChannel(border_image,AlphaChannel,0.0,sigma,exception);
+  PushPixelComponentMap(border_image,AlphaChannel);
+  shadow_image=BlurImage(border_image,0.0,sigma,exception);
+  PopPixelComponentMap(border_image);
   border_image=DestroyImage(border_image);
   if (shadow_image == (Image *) NULL)
     return((Image *) NULL);
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 97a8cc7..fd88b44 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -3602,7 +3602,9 @@
         status=TransformImageColorspace(image,RGBColorspace);
       if (image->matte == MagickFalse)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel);
-      (void) BilevelImageChannel(image,AlphaChannel,(double) QuantumRange/2.0);
+      PushPixelComponentMap(image,AlphaChannel);
+      (void) BilevelImage(image,(double) QuantumRange/2.0);
+      PopPixelComponentMap(image);
       quantize_info=AcquireQuantizeInfo(image_info);
       status=QuantizeImage(quantize_info,image);
       quantize_info=DestroyQuantizeInfo(quantize_info);
diff --git a/MagickCore/methods.h b/MagickCore/methods.h
index 03de5dc..6fcfa7a 100644
--- a/MagickCore/methods.h
+++ b/MagickCore/methods.h
@@ -80,10 +80,10 @@
 #define AcquireUniqueFilename  PrependMagickMethod(AcquireUniqueFilename)
 #define AcquireUniqueFileResource  PrependMagickMethod(AcquireUniqueFileResource)
 #define AcquireUniqueSymbolicLink  PrependMagickMethod(AcquireUniqueSymbolicLink)
-#define AdaptiveBlurImageChannel  PrependMagickMethod(AdaptiveBlurImageChannel)
+#define AdaptiveBlurImage  PrependMagickMethod(AdaptiveBlurImage)
 #define AdaptiveBlurImage  PrependMagickMethod(AdaptiveBlurImage)
 #define AdaptiveResizeImage  PrependMagickMethod(AdaptiveResizeImage)
-#define AdaptiveSharpenImageChannel  PrependMagickMethod(AdaptiveSharpenImageChannel)
+#define AdaptiveSharpenImage  PrependMagickMethod(AdaptiveSharpenImage)
 #define AdaptiveSharpenImage  PrependMagickMethod(AdaptiveSharpenImage)
 #define AdaptiveThresholdImage  PrependMagickMethod(AdaptiveThresholdImage)
 #define AddChildToXMLTree  PrependMagickMethod(AddChildToXMLTree)
@@ -118,14 +118,14 @@
 #define AverageImages  PrependMagickMethod(AverageImages)
 #define Base64Decode  PrependMagickMethod(Base64Decode)
 #define Base64Encode  PrependMagickMethod(Base64Encode)
-#define BilevelImageChannel  PrependMagickMethod(BilevelImageChannel)
 #define BilevelImage  PrependMagickMethod(BilevelImage)
-#define BlackThresholdImageChannel  PrependMagickMethod(BlackThresholdImageChannel)
+#define BilevelImage  PrependMagickMethod(BilevelImage)
+#define BlackThresholdImage  PrependMagickMethod(BlackThresholdImage)
 #define BlackThresholdImage  PrependMagickMethod(BlackThresholdImage)
 #define BlobToFile  PrependMagickMethod(BlobToFile)
 #define BlobToImage  PrependMagickMethod(BlobToImage)
 #define BlueShiftImage  PrependMagickMethod(BlueShiftImage)
-#define BlurImageChannel  PrependMagickMethod(BlurImageChannel)
+#define BlurImage  PrependMagickMethod(BlurImage)
 #define BlurImage  PrependMagickMethod(BlurImage)
 #define BorderImage  PrependMagickMethod(BorderImage)
 #define BrightnessContrastImage  PrependMagickMethod(BrightnessContrastImage)
@@ -140,7 +140,7 @@
 #define CharcoalImage  PrependMagickMethod(CharcoalImage)
 #define ChopImage  PrependMagickMethod(ChopImage)
 #define ChopPathComponents  PrependMagickMethod(ChopPathComponents)
-#define ClampImageChannel  PrependMagickMethod(ClampImageChannel)
+#define ClampImage  PrependMagickMethod(ClampImage)
 #define ClampImage  PrependMagickMethod(ClampImage)
 #define ClearLinkedList  PrependMagickMethod(ClearLinkedList)
 #define ClearMagickException  PrependMagickMethod(ClearMagickException)
@@ -189,7 +189,7 @@
 #define CompareSplayTreeStringInfo  PrependMagickMethod(CompareSplayTreeStringInfo)
 #define CompareSplayTreeString  PrependMagickMethod(CompareSplayTreeString)
 #define CompareStringInfo  PrependMagickMethod(CompareStringInfo)
-#define CompositeImageChannel  PrependMagickMethod(CompositeImageChannel)
+#define CompositeImage  PrependMagickMethod(CompositeImage)
 #define CompositeImage  PrependMagickMethod(CompositeImage)
 #define CompositeLayers  PrependMagickMethod(CompositeLayers)
 #define CompressImageColormap  PrependMagickMethod(CompressImageColormap)
@@ -215,7 +215,7 @@
 #define ConvertRGBToHSB  PrependMagickMethod(ConvertRGBToHSB)
 #define ConvertRGBToHSL  PrependMagickMethod(ConvertRGBToHSL)
 #define ConvertRGBToHWB  PrependMagickMethod(ConvertRGBToHWB)
-#define ConvolveImageChannel  PrependMagickMethod(ConvolveImageChannel)
+#define ConvolveImage  PrependMagickMethod(ConvolveImage)
 #define ConvolveImage  PrependMagickMethod(ConvolveImage)
 #define CopyMagickMemory  PrependMagickMethod(CopyMagickMemory)
 #define CopyMagickString  PrependMagickMethod(CopyMagickString)
@@ -323,7 +323,7 @@
 #define FileToImage  PrependMagickMethod(FileToImage)
 #define FileToStringInfo  PrependMagickMethod(FileToStringInfo)
 #define FileToString  PrependMagickMethod(FileToString)
-#define FilterImageChannel  PrependMagickMethod(FilterImageChannel)
+#define FilterImage  PrependMagickMethod(FilterImage)
 #define FilterImage  PrependMagickMethod(FilterImage)
 #define FinalizeSignature  PrependMagickMethod(FinalizeSignature)
 #define FlattenImages  PrependMagickMethod(FlattenImages)
@@ -355,7 +355,7 @@
 #define FxPreprocessExpression  PrependMagickMethod(FxPreprocessExpression)
 #define GammaImage  PrependMagickMethod(GammaImage)
 #define GammaImage  PrependMagickMethod(GammaImage)
-#define GaussianBlurImageChannel  PrependMagickMethod(GaussianBlurImageChannel)
+#define GaussianBlurImage  PrependMagickMethod(GaussianBlurImage)
 #define GaussianBlurImage  PrependMagickMethod(GaussianBlurImage)
 #define GaussJordanElimination  PrependMagickMethod(GaussJordanElimination)
 #define GenerateDifferentialNoise  PrependMagickMethod(GenerateDifferentialNoise)
@@ -760,7 +760,7 @@
 #define MorphImages  PrependMagickMethod(MorphImages)
 #define MorphologyImage  PrependMagickMethod(MorphologyImage)
 #define MosaicImages  PrependMagickMethod(MosaicImages)
-#define MotionBlurImageChannel  PrependMagickMethod(MotionBlurImageChannel)
+#define MotionBlurImage  PrependMagickMethod(MotionBlurImage)
 #define MotionBlurImage  PrependMagickMethod(MotionBlurImage)
 #define MSBOrderLong  PrependMagickMethod(MSBOrderLong)
 #define MSBOrderShort  PrependMagickMethod(MSBOrderShort)
@@ -841,13 +841,13 @@
 #define QueueAuthenticNexus  PrependMagickMethod(QueueAuthenticNexus)
 #define QueueAuthenticPixels  PrependMagickMethod(QueueAuthenticPixels)
 #define QueueCacheViewAuthenticPixels  PrependMagickMethod(QueueCacheViewAuthenticPixels)
-#define RadialBlurImageChannel  PrependMagickMethod(RadialBlurImageChannel)
+#define RadialBlurImage  PrependMagickMethod(RadialBlurImage)
 #define RadialBlurImage  PrependMagickMethod(RadialBlurImage)
 #define RaiseImage  PrependMagickMethod(RaiseImage)
 #define RandomChannelThresholdImage  PrependMagickMethod(RandomChannelThresholdImage)
 #define RandomComponentGenesis  PrependMagickMethod(RandomComponentGenesis)
 #define RandomComponentTerminus  PrependMagickMethod(RandomComponentTerminus)
-#define RandomThresholdImageChannel  PrependMagickMethod(RandomThresholdImageChannel)
+#define RandomThresholdImage  PrependMagickMethod(RandomThresholdImage)
 #define RandomThresholdImage  PrependMagickMethod(RandomThresholdImage)
 #define ReacquireMemory  PrependMagickMethod(ReacquireMemory)
 #define ReadBlobByte  PrependMagickMethod(ReadBlobByte)
@@ -1038,7 +1038,7 @@
 #define SeedPseudoRandomGenerator  PrependMagickMethod(SeedPseudoRandomGenerator)
 #define SeekBlob  PrependMagickMethod(SeekBlob)
 #define SegmentImage  PrependMagickMethod(SegmentImage)
-#define SelectiveBlurImageChannel  PrependMagickMethod(SelectiveBlurImageChannel)
+#define SelectiveBlurImage  PrependMagickMethod(SelectiveBlurImage)
 #define SelectiveBlurImage  PrependMagickMethod(SelectiveBlurImage)
 #define SemaphoreComponentGenesis  PrependMagickMethod(SemaphoreComponentGenesis)
 #define SemaphoreComponentTerminus  PrependMagickMethod(SemaphoreComponentTerminus)
@@ -1123,7 +1123,7 @@
 #define SetXMLTreeContent  PrependMagickMethod(SetXMLTreeContent)
 #define ShadeImage  PrependMagickMethod(ShadeImage)
 #define ShadowImage  PrependMagickMethod(ShadowImage)
-#define SharpenImageChannel  PrependMagickMethod(SharpenImageChannel)
+#define SharpenImage  PrependMagickMethod(SharpenImage)
 #define SharpenImage  PrependMagickMethod(SharpenImage)
 #define ShaveImage  PrependMagickMethod(ShaveImage)
 #define ShearImage  PrependMagickMethod(ShearImage)
@@ -1308,14 +1308,14 @@
 #define UnregisterXWDImage  PrependMagickMethod(UnregisterXWDImage)
 #define UnregisterYCBCRImage  PrependMagickMethod(UnregisterYCBCRImage)
 #define UnregisterYUVImage  PrependMagickMethod(UnregisterYUVImage)
-#define UnsharpMaskImageChannel  PrependMagickMethod(UnsharpMaskImageChannel)
+#define UnsharpMaskImage  PrependMagickMethod(UnsharpMaskImage)
 #define UnsharpMaskImage  PrependMagickMethod(UnsharpMaskImage)
 #define UnshiftImageList  PrependMagickMethod(UnshiftImageList)
 #define UpdateSignature  PrependMagickMethod(UpdateSignature)
 #define ValidateColormapIndex  PrependMagickMethod(ValidateColormapIndex)
 #define VignetteImage  PrependMagickMethod(VignetteImage)
 #define WaveImage  PrependMagickMethod(WaveImage)
-#define WhiteThresholdImageChannel  PrependMagickMethod(WhiteThresholdImageChannel)
+#define WhiteThresholdImage  PrependMagickMethod(WhiteThresholdImage)
 #define WhiteThresholdImage  PrependMagickMethod(WhiteThresholdImage)
 #define WriteBlobByte  PrependMagickMethod(WriteBlobByte)
 #define WriteBlobFloat  PrependMagickMethod(WriteBlobFloat)
diff --git a/MagickCore/morphology-private.h b/MagickCore/morphology-private.h
index 78bc9e7..8e45ca4 100644
--- a/MagickCore/morphology-private.h
+++ b/MagickCore/morphology-private.h
@@ -29,9 +29,8 @@
 #include <MagickCore/morphology.h>
 
 extern MagickExport Image
-  *MorphologyApply(const Image *,const ChannelType,const MorphologyMethod,
-    const ssize_t,const KernelInfo *,const CompositeOperator,const double,
-    ExceptionInfo *);
+  *MorphologyApply(const Image *,const MorphologyMethod,const ssize_t,
+    const KernelInfo *,const CompositeOperator,const double,ExceptionInfo *);
 
 extern MagickExport void
   ScaleKernelInfo(KernelInfo *,const double,const GeometryFlags),
diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c
index 00ca774..e12f0fb 100644
--- a/MagickCore/morphology.c
+++ b/MagickCore/morphology.c
@@ -2443,12 +2443,12 @@
 %  MorphologyApply() applies a morphological method, multiple times using
 %  a list of multiple kernels.
 %
-%  It is basically equivalent to as MorphologyImageChannel() (see below) but
+%  It is basically equivalent to as MorphologyImage() (see below) but
 %  without any user controls.  This allows internel programs to use this
 %  function, to actually perform a specific task without possible interference
 %  by any API user supplied settings.
 %
-%  It is MorphologyImageChannel() task to extract any such user controls, and
+%  It is MorphologyImage() task to extract any such user controls, and
 %  pass them to this function for processing.
 %
 %  More specifically kernels are not normalized/scaled/blended by the
@@ -2459,9 +2459,9 @@
 %  The format of the MorphologyApply method is:
 %
 %      Image *MorphologyApply(const Image *image,MorphologyMethod method,
-%        const ChannelType channel, const ssize_t iterations,
-%        const KernelInfo *kernel, const CompositeMethod compose,
-%        const double bias, ExceptionInfo *exception)
+%        const ssize_t iterations,const KernelInfo *kernel,
+%        const CompositeMethod compose,const double bias,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2469,10 +2469,6 @@
 %
 %    o method: the morphology method to be applied.
 %
-%    o channel: the channels to which the operations are applied
-%               The channel 'sync' flag determines if 'alpha weighting' is
-%               applied for convolution style operations.
-%
 %    o iterations: apply the operation this many times (or no change).
 %                  A value of -1 means loop until no change found.
 %                  How this is applied may depend on the morphology method.
@@ -2498,9 +2494,9 @@
 ** It returns the number of pixels that changed between the images
 ** for result convergence determination.
 */
-static ssize_t MorphologyPrimitive(const Image *image, Image *morphology_image,
-     const MorphologyMethod method, const ChannelType channel,
-     const KernelInfo *kernel,const double bias,ExceptionInfo *exception)
+static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
+  const MorphologyMethod method,const KernelInfo *kernel,const double bias,
+  ExceptionInfo *exception)
 {
 #define MorphologyTag  "Morphology/Image"
 
@@ -2657,8 +2653,8 @@
         */
         k = &kernel->values[ kernel->height-1 ];
         k_pixels = p;
-        if ( ((channel & SyncChannels) == 0 ) ||
-                             (image->matte == MagickFalse) )
+        if ( (image->sync == MagickFalse) ||
+             (image->matte == MagickFalse) )
           { /* No 'Sync' involved.
             ** Convolution is simple greyscale channel operation
             */
@@ -2882,8 +2878,8 @@
             */
             k = &kernel->values[ kernel->width*kernel->height-1 ];
             k_pixels = p;
-            if ( ((channel & SyncChannels) == 0 ) ||
-                                 (image->matte == MagickFalse) )
+            if ( (image->sync == MagickFalse) ||
+                 (image->matte == MagickFalse) )
               { /* No 'Sync' involved.
                 ** Convolution is simple greyscale channel operation
                 */
@@ -3279,8 +3275,8 @@
 ** of multi-threaded, parellel processing.
 */
 static ssize_t MorphologyPrimitiveDirect(Image *image,
-     const MorphologyMethod method, const ChannelType channel,
-     const KernelInfo *kernel,ExceptionInfo *exception)
+  const MorphologyMethod method,const KernelInfo *kernel,
+  ExceptionInfo *exception)
 {
   CacheView
     *auth_view,
@@ -3713,10 +3709,10 @@
 ** Basically this provides the complex grue between the requested morphology
 ** method and raw low-level implementation (above).
 */
-MagickExport Image *MorphologyApply(const Image *image, const ChannelType
-     channel,const MorphologyMethod method, const ssize_t iterations,
-     const KernelInfo *kernel, const CompositeOperator compose,
-     const double bias, ExceptionInfo *exception)
+MagickExport Image *MorphologyApply(const Image *image,
+  const MorphologyMethod method, const ssize_t iterations,
+  const KernelInfo *kernel, const CompositeOperator compose,const double bias,
+  ExceptionInfo *exception)
 {
   CompositeOperator
     curr_compose;
@@ -3838,7 +3834,7 @@
         }
 
       changed = MorphologyPrimitiveDirect(rslt_image, method,
-                      channel, kernel, exception);
+         kernel, exception);
 
       if ( verbose == MagickTrue )
         (void) (void) FormatLocaleFile(stderr,
@@ -3852,8 +3848,7 @@
       if ( method == VoronoiMorphology ) {
         /* Preserve the alpha channel of input image - but turned off */
         (void) SetImageAlphaChannel(rslt_image, DeactivateAlphaChannel);
-        (void) CompositeImageChannel(rslt_image, DefaultChannels,
-          CopyOpacityCompositeOp, image, 0, 0);
+        (void) CompositeImage(rslt_image, CopyOpacityCompositeOp, image, 0, 0);
         (void) SetImageAlphaChannel(rslt_image, DeactivateAlphaChannel);
       }
       goto exit_cleanup;
@@ -4023,7 +4018,7 @@
           /* APPLY THE MORPHOLOGICAL PRIMITIVE (curr -> work) */
           count++;
           changed = MorphologyPrimitive(curr_image, work_image, primitive,
-                       channel, this_kernel, bias, exception);
+                       this_kernel, bias, exception);
 
           if ( verbose == MagickTrue ) {
             if ( kernel_loop > 1 )
@@ -4080,17 +4075,16 @@
           if ( verbose == MagickTrue )
             (void) FormatLocaleFile(stderr, "\n%s: Difference with original image",
                  CommandOptionToMnemonic(MagickMorphologyOptions, method) );
-          (void) CompositeImageChannel(curr_image,
-                  (ChannelType) (channel & ~SyncChannels),
-                  DifferenceCompositeOp, image, 0, 0);
+          curr_image->sync=MagickFalse;
+          (void) CompositeImage(curr_image,DifferenceCompositeOp,image,0,0);
           break;
         case EdgeMorphology:
           if ( verbose == MagickTrue )
             (void) FormatLocaleFile(stderr, "\n%s: Difference of Dilate and Erode",
                  CommandOptionToMnemonic(MagickMorphologyOptions, method) );
-          (void) CompositeImageChannel(curr_image,
-                  (ChannelType) (channel & ~SyncChannels),
-                  DifferenceCompositeOp, save_image, 0, 0);
+          curr_image->sync=MagickFalse;
+          (void) CompositeImage(curr_image,DifferenceCompositeOp,save_image,0,
+            0);
           save_image = DestroyImage(save_image); /* finished with save image */
           break;
         default:
@@ -4126,9 +4120,8 @@
           if ( verbose == MagickTrue )
             (void) FormatLocaleFile(stderr, " (compose \"%s\")",
                  CommandOptionToMnemonic(MagickComposeOptions, rslt_compose) );
-          (void) CompositeImageChannel(rslt_image,
-               (ChannelType) (channel & ~SyncChannels), rslt_compose,
-               curr_image, 0, 0);
+          rslt_image->sync=MagickFalse;
+          (void) CompositeImage(rslt_image, rslt_compose, curr_image, 0, 0);
           curr_image = DestroyImage(curr_image);
           curr_image = (Image *) image;  /* continue with original image */
         }
@@ -4172,13 +4165,13 @@
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%     M o r p h o l o g y I m a g e C h a n n e l                             %
+%     M o r p h o l o g y I m a g e                                           %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  MorphologyImageChannel() applies a user supplied kernel to the image
+%  MorphologyImage() applies a user supplied kernel to the image
 %  according to the given mophology method.
 %
 %  This function applies any and all user defined settings before calling
@@ -4195,7 +4188,7 @@
 %      Image *MorphologyImage(const Image *image,MorphologyMethod method,
 %        const ssize_t iterations,KernelInfo *kernel,ExceptionInfo *exception)
 %
-%      Image *MorphologyImageChannel(const Image *image, const ChannelType
+%      Image *MorphologyImage(const Image *image, const ChannelType
 %        channel,MorphologyMethod method,const ssize_t iterations,
 %        KernelInfo *kernel,ExceptionInfo *exception)
 %
@@ -4210,18 +4203,15 @@
 %                  How this is applied may depend on the morphology method.
 %                  Typically this is a value of 1.
 %
-%    o channel: the channel type.
-%
 %    o kernel: An array of double representing the morphology kernel.
 %              Warning: kernel may be normalized for the Convolve method.
 %
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
-MagickExport Image *MorphologyImageChannel(const Image *image,
-  const ChannelType channel,const MorphologyMethod method,
-  const ssize_t iterations,const KernelInfo *kernel,ExceptionInfo *exception)
+MagickExport Image *MorphologyImage(const Image *image,
+  const MorphologyMethod method,const ssize_t iterations,
+  const KernelInfo *kernel,ExceptionInfo *exception)
 {
   KernelInfo
     *curr_kernel;
@@ -4275,26 +4265,14 @@
                              MagickComposeOptions,MagickFalse,artifact);
   }
   /* Apply the Morphology */
-  morphology_image = MorphologyApply(image, channel, method, iterations,
-                         curr_kernel, compose, image->bias, exception);
+  morphology_image = MorphologyApply(image, method, iterations,
+    curr_kernel, compose, image->bias, exception);
 
   /* Cleanup and Exit */
   if ( curr_kernel != kernel )
     curr_kernel=DestroyKernelInfo(curr_kernel);
   return(morphology_image);
 }
-
-MagickExport Image *MorphologyImage(const Image *image, const MorphologyMethod
-  method, const ssize_t iterations,const KernelInfo *kernel, ExceptionInfo
-  *exception)
-{
-  Image
-    *morphology_image;
-
-  morphology_image=MorphologyImageChannel(image,DefaultChannels,method,
-    iterations,kernel,exception);
-  return(morphology_image);
-}
 
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/MagickCore/morphology.h b/MagickCore/morphology.h
index fc0e242..70652d0 100644
--- a/MagickCore/morphology.h
+++ b/MagickCore/morphology.h
@@ -133,9 +133,7 @@
 
 extern MagickExport Image
   *MorphologyImage(const Image *,const MorphologyMethod,const ssize_t,
-    const KernelInfo *,ExceptionInfo *),
-  *MorphologyImageChannel(const Image *,const ChannelType,
-    const MorphologyMethod,const ssize_t,const KernelInfo *,ExceptionInfo *);
+    const KernelInfo *,ExceptionInfo *);
 
 extern MagickExport void
   ScaleGeometryKernelInfo(KernelInfo *,const char *),
diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c
index da42061..1fffd59 100644
--- a/MagickCore/threshold.c
+++ b/MagickCore/threshold.c
@@ -321,36 +321,22 @@
 %  If the default channel setting is given the image is thresholded using just
 %  the gray 'intensity' of the image, rather than the individual channels.
 %
-%  The format of the BilevelImageChannel method is:
+%  The format of the BilevelImage method is:
 %
 %      MagickBooleanType BilevelImage(Image *image,const double threshold)
-%      MagickBooleanType BilevelImageChannel(Image *image,
-%        const ChannelType channel,const double threshold)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 %    o threshold: define the threshold values.
 %
 %  Aside: You can get the same results as operator using LevelImages()
 %  with the 'threshold' value for both the black_point and the white_point.
 %
 */
-
-MagickExport MagickBooleanType BilevelImage(Image *image,const double threshold)
-{
-  MagickBooleanType
-    status;
-
-  status=BilevelImageChannel(image,DefaultChannels,threshold);
-  return(status);
-}
-
-MagickExport MagickBooleanType BilevelImageChannel(Image *image,
-  const ChannelType channel,const double threshold)
+MagickExport MagickBooleanType BilevelImage(Image *image,
+  const double threshold)
 {
 #define ThresholdImageTag  "Threshold/Image"
 
@@ -401,7 +387,7 @@
         status=MagickFalse;
         continue;
       }
-    if (channel == DefaultChannels)
+    if (image->sync != MagickFalse)
       {
         for (x=0; x < (ssize_t) image->columns; x++)
         {
@@ -448,7 +434,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_BilevelImageChannel)
+  #pragma omp critical (MagickCore_BilevelImage)
 #endif
         proceed=SetImageProgress(image,ThresholdImageTag,progress++,
           image->rows);
@@ -477,35 +463,20 @@
 %
 %  The format of the BlackThresholdImage method is:
 %
-%      MagickBooleanType BlackThresholdImage(Image *image,const char *threshold)
-%      MagickBooleanType BlackThresholdImageChannel(Image *image,
-%        const ChannelType channel,const char *threshold,
-%        ExceptionInfo *exception)
+%      MagickBooleanType BlackThresholdImage(Image *image,
+%        const char *threshold,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel or channels to be thresholded.
-%
 %    o threshold: Define the threshold value.
 %
 %    o exception: return any errors or warnings in this structure.
 %
 */
 MagickExport MagickBooleanType BlackThresholdImage(Image *image,
-  const char *threshold)
-{
-  MagickBooleanType
-    status;
-
-  status=BlackThresholdImageChannel(image,DefaultChannels,threshold,
-    &image->exception);
-  return(status);
-}
-
-MagickExport MagickBooleanType BlackThresholdImageChannel(Image *image,
-  const ChannelType channel,const char *thresholds,ExceptionInfo *exception)
+  const char *thresholds,ExceptionInfo *exception)
 {
 #define ThresholdImageTag  "Threshold/Image"
 
@@ -588,7 +559,7 @@
       }
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      if (channel != DefaultChannels)
+      if (image->sync != MagickFalse)
         {
           if (GetPixelIntensity(image,q) < GetPixelInfoIntensity(&threshold))
             {
@@ -628,7 +599,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_BlackThresholdImageChannel)
+  #pragma omp critical (MagickCore_BlackThresholdImage)
 #endif
         proceed=SetImageProgress(image,ThresholdImageTag,progress++,
           image->rows);
@@ -653,18 +624,14 @@
 %
 %  ClampImage() restricts the color range from 0 to the quantum depth.
 %
-%  The format of the ClampImageChannel method is:
+%  The format of the ClampImage method is:
 %
 %      MagickBooleanType ClampImage(Image *image)
-%      MagickBooleanType ClampImageChannel(Image *image,
-%        const ChannelType channel)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel type.
-%
 */
 
 static inline Quantum ClampToUnsignedQuantum(const Quantum quantum)
@@ -682,16 +649,6 @@
 
 MagickExport MagickBooleanType ClampImage(Image *image)
 {
-  MagickBooleanType
-    status;
-
-  status=ClampImageChannel(image,DefaultChannels);
-  return(status);
-}
-
-MagickExport MagickBooleanType ClampImageChannel(Image *image,
-  const ChannelType channel)
-{
 #define ClampImageTag  "Clamp/Image"
 
   CacheView
@@ -781,7 +738,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_ClampImageChannel)
+  #pragma omp critical (MagickCore_ClampImage)
 #endif
         proceed=SetImageProgress(image,ClampImageTag,progress++,
           image->rows);
@@ -1528,18 +1485,13 @@
 %
 %  The format of the RandomThresholdImage method is:
 %
-%      MagickBooleanType RandomThresholdImageChannel(Image *image,
+%      MagickBooleanType RandomThresholdImage(Image *image,
 %        const char *thresholds,ExceptionInfo *exception)
-%      MagickBooleanType RandomThresholdImageChannel(Image *image,
-%        const ChannelType channel,const char *thresholds,
-%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel or channels to be thresholded.
-%
 %    o thresholds: a geometry string containing low,high thresholds.  If the
 %      string contains 2x2, 3x3, or 4x4, an ordered dither of order 2, 3, or 4
 %      is performed instead.
@@ -1547,21 +1499,9 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
-
 MagickExport MagickBooleanType RandomThresholdImage(Image *image,
   const char *thresholds,ExceptionInfo *exception)
 {
-  MagickBooleanType
-    status;
-
-  status=RandomThresholdImageChannel(image,DefaultChannels,thresholds,
-    exception);
-  return(status);
-}
-
-MagickExport MagickBooleanType RandomThresholdImageChannel(Image *image,
-  const ChannelType channel,const char *thresholds,ExceptionInfo *exception)
-{
 #define ThresholdImageTag  "Threshold/Image"
 
   CacheView
@@ -1613,22 +1553,12 @@
       max_threshold*=(MagickRealType) (0.01*QuantumRange);
       min_threshold*=(MagickRealType) (0.01*QuantumRange);
     }
-  else
-    if (((max_threshold == min_threshold) || (max_threshold == 1)) &&
-        (min_threshold <= 8))
-      {
-        /*
-          Backward Compatibility -- ordered-dither -- IM v 6.2.9-6.
-        */
-        status=OrderedPosterizeImage(image,thresholds,exception);
-        return(status);
-      }
   /*
     Random threshold image.
   */
   status=MagickTrue;
   progress=0;
-  if (channel == CompositeChannels)
+  if (image->sync != MagickFalse)
     {
       if (AcquireImageColormap(image,2) == MagickFalse)
         ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
@@ -1692,7 +1622,7 @@
               proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_RandomThresholdImageChannel)
+  #pragma omp critical (MagickCore_RandomThresholdImage)
 #endif
             proceed=SetImageProgress(image,ThresholdImageTag,progress++,
               image->rows);
@@ -1817,7 +1747,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_RandomThresholdImageChannel)
+  #pragma omp critical (MagickCore_RandomThresholdImage)
 #endif
         proceed=SetImageProgress(image,ThresholdImageTag,progress++,
           image->rows);
@@ -1847,35 +1777,20 @@
 %
 %  The format of the WhiteThresholdImage method is:
 %
-%      MagickBooleanType WhiteThresholdImage(Image *image,const char *threshold)
-%      MagickBooleanType WhiteThresholdImageChannel(Image *image,
-%        const ChannelType channel,const char *threshold,
-%        ExceptionInfo *exception)
+%      MagickBooleanType WhiteThresholdImage(Image *image,
+%        const char *threshold,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
-%    o channel: the channel or channels to be thresholded.
-%
 %    o threshold: Define the threshold value.
 %
 %    o exception: return any errors or warnings in this structure.
 %
 */
 MagickExport MagickBooleanType WhiteThresholdImage(Image *image,
-  const char *threshold)
-{
-  MagickBooleanType
-    status;
-
-  status=WhiteThresholdImageChannel(image,DefaultChannels,threshold,
-    &image->exception);
-  return(status);
-}
-
-MagickExport MagickBooleanType WhiteThresholdImageChannel(Image *image,
-  const ChannelType channel,const char *thresholds,ExceptionInfo *exception)
+  const char *thresholds,ExceptionInfo *exception)
 {
 #define ThresholdImageTag  "Threshold/Image"
 
@@ -1958,7 +1873,7 @@
       }
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      if (channel != DefaultChannels)
+      if (image->sync != MagickFalse)
         {
           if (GetPixelIntensity(image,q) > GetPixelInfoIntensity(&threshold))
             {
@@ -1998,7 +1913,7 @@
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickCore_WhiteThresholdImageChannel)
+  #pragma omp critical (MagickCore_WhiteThresholdImage)
 #endif
         proceed=SetImageProgress(image,ThresholdImageTag,progress++,
           image->rows);
diff --git a/MagickCore/threshold.h b/MagickCore/threshold.h
index 2743d46..c8c7230 100644
--- a/MagickCore/threshold.h
+++ b/MagickCore/threshold.h
@@ -35,20 +35,12 @@
 
 extern MagickExport MagickBooleanType
   BilevelImage(Image *,const double),
-  BilevelImageChannel(Image *,const ChannelType,const double),
-  BlackThresholdImage(Image *,const char *),
-  BlackThresholdImageChannel(Image *,const ChannelType,const char *,
-    ExceptionInfo *),
+  BlackThresholdImage(Image *,const char *,ExceptionInfo *),
   ClampImage(Image *),
-  ClampImageChannel(Image *,const ChannelType),
   ListThresholdMaps(FILE *,ExceptionInfo *),
   OrderedPosterizeImage(Image *,const char *,ExceptionInfo *),
   RandomThresholdImage(Image *,const char *,ExceptionInfo *),
-  RandomThresholdImageChannel(Image *,const ChannelType,const char *,
-    ExceptionInfo *),
-  WhiteThresholdImage(Image *,const char *),
-  WhiteThresholdImageChannel(Image *,const ChannelType,const char *,
-    ExceptionInfo *);
+  WhiteThresholdImage(Image *,const char *,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/MagickWand/composite.c b/MagickWand/composite.c
index 6f22b80..217cc38 100644
--- a/MagickWand/composite.c
+++ b/MagickWand/composite.c
@@ -122,6 +122,7 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*image)->filename);
   assert(exception != (ExceptionInfo *) NULL);
   status=MagickTrue;
+  PushPixelComponentMap(composite_image,composite_options->channel);
   if (composite_image != (Image *) NULL)
     {
       assert(composite_image->signature == MagickSignature);
@@ -189,8 +190,7 @@
               columns=composite_image->columns;
               for (y=0; y < (ssize_t) (*image)->rows; y+=(ssize_t) composite_image->rows)
                 for (x=0; x < (ssize_t) (*image)->columns; x+=(ssize_t) columns)
-                  status&=CompositeImageChannel(*image,
-                    composite_options->channel,composite_options->compose,
+                  status&=CompositeImage(*image,composite_options->compose,
                     composite_image,x,y);
               GetImageException(*image,exception);
             }
@@ -213,12 +213,12 @@
               /*
                 Digitally composite image.
               */
-              status&=CompositeImageChannel(*image,composite_options->channel,
-                composite_options->compose,composite_image,geometry.x,
-                geometry.y);
+              status&=CompositeImage(*image,composite_options->compose,
+                composite_image,geometry.x,geometry.y);
               GetImageException(*image,exception);
             }
     }
+  PopPixelComponentMap(composite_image);
   return(status != 0 ? MagickTrue : MagickFalse);
 }
 
diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c
index 09449d9..7cb7d4c 100644
--- a/MagickWand/magick-image.c
+++ b/MagickWand/magick-image.c
@@ -178,35 +178,20 @@
 %
 %      MagickBooleanType MagickAdaptiveBlurImage(MagickWand *wand,
 %        const double radius,const double sigma)
-%      MagickBooleanType MagickAdaptiveBlurImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double radius,const double sigma)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
 %    o sigma: the standard deviation of the Gaussian, in pixels.
 %
 */
-
 WandExport MagickBooleanType MagickAdaptiveBlurImage(MagickWand *wand,
   const double radius,const double sigma)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickAdaptiveBlurImageChannel(wand,DefaultChannels,radius,sigma);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickAdaptiveBlurImageChannel(MagickWand *wand,
-  const ChannelType channel,const double radius,const double sigma)
-{
   Image
     *sharp_image;
 
@@ -216,8 +201,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  sharp_image=AdaptiveBlurImageChannel(wand->images,channel,radius,sigma,
-    wand->exception);
+  sharp_image=AdaptiveBlurImage(wand->images,radius,sigma,wand->exception);
   if (sharp_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,sharp_image);
@@ -291,35 +275,20 @@
 %
 %      MagickBooleanType MagickAdaptiveSharpenImage(MagickWand *wand,
 %        const double radius,const double sigma)
-%      MagickBooleanType MagickAdaptiveSharpenImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double radius,const double sigma)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
 %    o sigma: the standard deviation of the Gaussian, in pixels.
 %
 */
-
 WandExport MagickBooleanType MagickAdaptiveSharpenImage(MagickWand *wand,
   const double radius,const double sigma)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickAdaptiveSharpenImageChannel(wand,DefaultChannels,radius,sigma);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickAdaptiveSharpenImageChannel(MagickWand *wand,
-  const ChannelType channel,const double radius,const double sigma)
-{
   Image
     *sharp_image;
 
@@ -329,8 +298,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  sharp_image=AdaptiveSharpenImageChannel(wand->images,channel,radius,sigma,
-    wand->exception);
+  sharp_image=AdaptiveSharpenImage(wand->images,radius,sigma,wand->exception);
   if (sharp_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,sharp_image);
@@ -854,7 +822,7 @@
     QuantumFormat "," QuantumFormat "," QuantumFormat "," QuantumFormat,
     PixelGetRedQuantum(threshold),PixelGetGreenQuantum(threshold),
     PixelGetBlueQuantum(threshold),PixelGetOpacityQuantum(threshold));
-  status=BlackThresholdImage(wand->images,thresholds);
+  status=BlackThresholdImage(wand->images,thresholds,&wand->images->exception);
   if (status == MagickFalse)
     InheritException(wand->exception,&wand->images->exception);
   return(status);
@@ -925,35 +893,20 @@
 %
 %      MagickBooleanType MagickBlurImage(MagickWand *wand,const double radius,
 %        const double sigma)
-%      MagickBooleanType MagickBlurImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double radius,const double sigma)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o radius: the radius of the , in pixels, not counting the center
 %      pixel.
 %
 %    o sigma: the standard deviation of the , in pixels.
 %
 */
-
 WandExport MagickBooleanType MagickBlurImage(MagickWand *wand,
   const double radius,const double sigma)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickBlurImageChannel(wand,DefaultChannels,radius,sigma);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickBlurImageChannel(MagickWand *wand,
-  const ChannelType channel,const double radius,const double sigma)
-{
   Image
     *blur_image;
 
@@ -963,8 +916,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  blur_image=BlurImageChannel(wand->images,channel,radius,sigma,
-    wand->exception);
+  blur_image=BlurImage(wand->images,radius,sigma,wand->exception);
   if (blur_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,blur_image);
@@ -1202,8 +1154,6 @@
 %  The format of the MagickClampImage method is:
 %
 %      MagickBooleanType MagickClampImage(MagickWand *wand)
-%      MagickBooleanType MagickClampImageChannel(MagickWand *wand,
-%        const ChannelType channel)
 %
 %  A description of each parameter follows:
 %
@@ -1212,29 +1162,18 @@
 %    o channel: the channel.
 %
 */
-
 WandExport MagickBooleanType MagickClampImage(MagickWand *wand)
 {
   MagickBooleanType
     status;
 
-  status=MagickClampImageChannel(wand,DefaultChannels);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickClampImageChannel(MagickWand *wand,
-  const ChannelType channel)
-{
-  MagickBooleanType
-    status;
-
   assert(wand != (MagickWand *) NULL);
   assert(wand->signature == WandSignature);
   if (wand->debug != MagickFalse)
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  status=ClampImageChannel(wand->images,channel);
+  status=ClampImage(wand->images);
   if (status == MagickFalse)
     InheritException(wand->exception,&wand->images->exception);
   return(status);
@@ -1794,9 +1733,6 @@
 %      MagickBooleanType MagickCompositeImage(MagickWand *wand,
 %        const MagickWand *composite_wand,const CompositeOperator compose,
 %        const ssize_t x,const ssize_t y)
-%      MagickBooleanType MagickCompositeImageChannel(MagickWand *wand,
-%        const ChannelType channel,const MagickWand *composite_wand,
-%        const CompositeOperator compose,const ssize_t x,const ssize_t y)
 %
 %  A description of each parameter follows:
 %
@@ -1818,22 +1754,9 @@
 %    o y: the row offset of the composited image.
 %
 */
-
 WandExport MagickBooleanType MagickCompositeImage(MagickWand *wand,
-  const MagickWand *composite_wand,const CompositeOperator compose,const ssize_t x,
-  const ssize_t y)
-{
-  MagickBooleanType
-    status;
-
-  status=MagickCompositeImageChannel(wand,DefaultChannels,composite_wand,
-    compose,x,y);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickCompositeImageChannel(MagickWand *wand,
-  const ChannelType channel,const MagickWand *composite_wand,
-  const CompositeOperator compose,const ssize_t x,const ssize_t y)
+  const MagickWand *composite_wand,const CompositeOperator compose,
+  const ssize_t x,const ssize_t y)
 {
   MagickBooleanType
     status;
@@ -1845,8 +1768,7 @@
   if ((wand->images == (Image *) NULL) ||
       (composite_wand->images == (Image *) NULL))
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  status=CompositeImageChannel(wand->images,channel,compose,
-    composite_wand->images,x,y);
+  status=CompositeImage(wand->images,compose,composite_wand->images,x,y);
   if (status == MagickFalse)
     InheritException(wand->exception,&wand->images->exception);
   return(status);
@@ -1963,35 +1885,19 @@
 %
 %      MagickBooleanType MagickConvolveImage(MagickWand *wand,
 %        const size_t order,const double *kernel)
-%      MagickBooleanType MagickConvolveImageChannel(MagickWand *wand,
-%        const ChannelType channel,const size_t order,
-%        const double *kernel)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o order: the number of columns and rows in the filter kernel.
 %
 %    o kernel: An array of doubles representing the convolution kernel.
 %
 */
-
 WandExport MagickBooleanType MagickConvolveImage(MagickWand *wand,
   const size_t order,const double *kernel)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickConvolveImageChannel(wand,DefaultChannels,order,kernel);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickConvolveImageChannel(MagickWand *wand,
-  const ChannelType channel,const size_t order,const double *kernel)
-{
   Image
     *convolve_image;
 
@@ -2003,8 +1909,7 @@
     return(MagickFalse);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  convolve_image=ConvolveImageChannel(wand->images,channel,order,kernel,
-    wand->exception);
+  convolve_image=ConvolveImage(wand->images,order,kernel,wand->exception);
   if (convolve_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,convolve_image);
@@ -3041,32 +2946,17 @@
 %
 %      MagickBooleanType MagickFilterImage(MagickWand *wand,
 %        const KernelInfo *kernel)
-%      MagickBooleanType MagickFilterImageChannel(MagickWand *wand,
-%        const ChannelType channel,const KernelInfo *kernel)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o kernel: An array of doubles representing the convolution kernel.
 %
 */
-
 WandExport MagickBooleanType MagickFilterImage(MagickWand *wand,
   const KernelInfo *kernel)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickFilterImageChannel(wand,DefaultChannels,kernel);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickFilterImageChannel(MagickWand *wand,
-  const ChannelType channel,const KernelInfo *kernel)
-{
   Image
     *filter_image;
 
@@ -3078,7 +2968,7 @@
     return(MagickFalse);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  filter_image=FilterImageChannel(wand->images,channel,kernel,wand->exception);
+  filter_image=FilterImage(wand->images,kernel,wand->exception);
   if (filter_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,filter_image);
@@ -3520,35 +3410,20 @@
 %
 %      MagickBooleanType MagickGaussianBlurImage(MagickWand *wand,
 %        const double radius,const double sigma)
-%      MagickBooleanType MagickGaussianBlurImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double radius,const double sigma)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
 %    o sigma: the standard deviation of the Gaussian, in pixels.
 %
 */
-
 WandExport MagickBooleanType MagickGaussianBlurImage(MagickWand *wand,
   const double radius,const double sigma)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickGaussianBlurImageChannel(wand,DefaultChannels,radius,sigma);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickGaussianBlurImageChannel(MagickWand *wand,
-  const ChannelType channel,const double radius,const double sigma)
-{
   Image
     *blur_image;
 
@@ -3558,8 +3433,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  blur_image=GaussianBlurImageChannel(wand->images,channel,radius,sigma,
-    wand->exception);
+  blur_image=GaussianBlurImage(wand->images,radius,sigma,wand->exception);
   if (blur_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,blur_image);
@@ -6715,16 +6589,11 @@
 %
 %      MagickBooleanType MagickMorphologyImage(MagickWand *wand,
 %        MorphologyMethod method,const ssize_t iterations,KernelInfo *kernel)
-%      MagickBooleanType MagickMorphologyImageChannel(MagickWand *wand,
-%        ChannelType channel,MorphologyMethod method,const ssize_t iterations,
-%        KernelInfo *kernel)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o method: the morphology method to be applied.
 %
 %    o iterations: apply the operation this many times (or no change).
@@ -6734,22 +6603,9 @@
 %    o kernel: An array of doubles representing the morphology kernel.
 %
 */
-
 WandExport MagickBooleanType MagickMorphologyImage(MagickWand *wand,
   MorphologyMethod method,const ssize_t iterations,KernelInfo *kernel)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickMorphologyImageChannel(wand,DefaultChannels,method,iterations,
-    kernel);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickMorphologyImageChannel(MagickWand *wand,
-  const ChannelType channel,MorphologyMethod method,const ssize_t iterations,
-  KernelInfo *kernel)
-{
   Image
     *morphology_image;
 
@@ -6761,8 +6617,8 @@
     return(MagickFalse);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  morphology_image=MorphologyImageChannel(wand->images,channel,method,
-    iterations,kernel,wand->exception);
+  morphology_image=MorphologyImage(wand->images,method,iterations,kernel,
+    wand->exception);
   if (morphology_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,morphology_image);
@@ -6790,16 +6646,11 @@
 %
 %      MagickBooleanType MagickMotionBlurImage(MagickWand *wand,
 %        const double radius,const double sigma,const double angle)
-%      MagickBooleanType MagickMotionBlurImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double radius,const double sigma,
-%        const double angle)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting
 %      the center pixel.
 %
@@ -6808,21 +6659,9 @@
 %    o angle: Apply the effect along this angle.
 %
 */
-
 WandExport MagickBooleanType MagickMotionBlurImage(MagickWand *wand,
   const double radius,const double sigma,const double angle)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickMotionBlurImageChannel(wand,DefaultChannels,radius,sigma,angle);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickMotionBlurImageChannel(MagickWand *wand,
-  const ChannelType channel,const double radius,const double sigma,
-  const double angle)
-{
   Image
     *blur_image;
 
@@ -6832,8 +6671,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  blur_image=MotionBlurImageChannel(wand->images,channel,radius,sigma,angle,
-    wand->exception);
+  blur_image=MotionBlurImage(wand->images,radius,sigma,angle,wand->exception);
   if (blur_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,blur_image);
@@ -7758,31 +7596,17 @@
 %
 %      MagickBooleanType MagickRadialBlurImage(MagickWand *wand,
 %        const double angle)
-%      MagickBooleanType MagickRadialBlurImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double angle)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o angle: the angle of the blur in degrees.
 %
 */
 WandExport MagickBooleanType MagickRadialBlurImage(MagickWand *wand,
   const double angle)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickRadialBlurImageChannel(wand,DefaultChannels,angle);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickRadialBlurImageChannel(MagickWand *wand,
-  const ChannelType channel,const double angle)
-{
   Image
     *blur_image;
 
@@ -7792,8 +7616,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  blur_image=RadialBlurImageChannel(wand->images,channel,angle,
-    wand->exception);
+  blur_image=RadialBlurImage(wand->images,angle,wand->exception);
   if (blur_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,blur_image);
@@ -7877,34 +7700,18 @@
 %
 %      MagickBooleanType MagickRandomThresholdImage(MagickWand *wand,
 %        const double low,const double high)
-%      MagickBooleanType MagickRandomThresholdImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double low,const double high)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o low,high: Specify the high and low thresholds.  These values range from
 %      0 to QuantumRange.
 %
 */
-
 WandExport MagickBooleanType MagickRandomThresholdImage(MagickWand *wand,
   const double low,const double high)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickRandomThresholdImageChannel(wand,DefaultChannels,low,high);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickRandomThresholdImageChannel(
-  MagickWand *wand,const ChannelType channel,const double low,
-  const double high)
-{
   char
     threshold[MaxTextExtent];
 
@@ -7918,8 +7725,7 @@
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
   (void) FormatLocaleString(threshold,MaxTextExtent,"%gx%g",low,high);
-  status=RandomThresholdImageChannel(wand->images,channel,threshold,
-    wand->exception);
+  status=RandomThresholdImage(wand->images,threshold,wand->exception);
   if (status == MagickFalse)
     InheritException(wand->exception,&wand->images->exception);
   return(status);
@@ -8598,16 +8404,11 @@
 %
 %      MagickBooleanType MagickSelectiveBlurImage(MagickWand *wand,
 %        const double radius,const double sigma,const double threshold)
-%      MagickBooleanType MagickSelectiveBlurImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double radius,const double sigma,
-%        const double threshold)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o radius: the radius of the gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -8617,22 +8418,9 @@
 %      in the blur operation.
 %
 */
-
 WandExport MagickBooleanType MagickSelectiveBlurImage(MagickWand *wand,
   const double radius,const double sigma,const double threshold)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickSelectiveBlurImageChannel(wand,DefaultChannels,radius,sigma,
-    threshold);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickSelectiveBlurImageChannel(MagickWand *wand,
-  const ChannelType channel,const double radius,const double sigma,
-  const double threshold)
-{
   Image
     *blur_image;
 
@@ -8642,8 +8430,8 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  blur_image=SelectiveBlurImageChannel(wand->images,channel,radius,sigma,
-    threshold,wand->exception);
+  blur_image=SelectiveBlurImage(wand->images,radius,sigma,threshold,
+    wand->exception);
   if (blur_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,blur_image);
@@ -10531,35 +10319,20 @@
 %
 %      MagickBooleanType MagickSharpenImage(MagickWand *wand,
 %        const double radius,const double sigma)
-%      MagickBooleanType MagickSharpenImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double radius,const double sigma)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
 %    o sigma: the standard deviation of the Gaussian, in pixels.
 %
 */
-
 WandExport MagickBooleanType MagickSharpenImage(MagickWand *wand,
   const double radius,const double sigma)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickSharpenImageChannel(wand,DefaultChannels,radius,sigma);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickSharpenImageChannel(MagickWand *wand,
-  const ChannelType channel,const double radius,const double sigma)
-{
   Image
     *sharp_image;
 
@@ -10569,8 +10342,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  sharp_image=SharpenImageChannel(wand->images,channel,radius,sigma,
-    wand->exception);
+  sharp_image=SharpenImage(wand->images,radius,sigma,wand->exception);
   if (sharp_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,sharp_image);
@@ -11139,16 +10911,11 @@
 %
 %      MagickBooleanType MagickStatisticImage(MagickWand *wand,
 %        const StatisticType type,const double width,const size_t height)
-%      MagickBooleanType MagickStatisticImageChannel(MagickWand *wand,
-%        const ChannelType channel,const StatisticType type,const double width,
-%        const size_t height)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o type: the statistic type (e.g. median, mode, etc.).
 %
 %    o width: the width of the pixel neighborhood.
@@ -11157,8 +10924,7 @@
 %
 */
 WandExport MagickBooleanType MagickStatisticImage(MagickWand *wand,
-  const ChannelType channel,const StatisticType type,const size_t width,
-  const size_t height)
+  const StatisticType type,const size_t width,const size_t height)
 {
   Image
     *statistic_image;
@@ -11169,7 +10935,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  statistic_image=StatisticImageChannel(wand->images,channel,type,width,height,
+  statistic_image=StatisticImage(wand->images,type,width,height,
     wand->exception);
   if (statistic_image == (Image *) NULL)
     return(MagickFalse);
@@ -11477,7 +11243,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  status=BilevelImageChannel(wand->images,channel,threshold);
+  status=BilevelImage(wand->images,threshold);
   if (status == MagickFalse)
     InheritException(wand->exception,&wand->images->exception);
   return(status);
@@ -11950,16 +11716,11 @@
 %      MagickBooleanType MagickUnsharpMaskImage(MagickWand *wand,
 %        const double radius,const double sigma,const double amount,
 %        const double threshold)
-%      MagickBooleanType MagickUnsharpMaskImageChannel(MagickWand *wand,
-%        const ChannelType channel,const double radius,const double sigma,
-%        const double amount,const double threshold)
 %
 %  A description of each parameter follows:
 %
 %    o wand: the magick wand.
 %
-%    o channel: the image channel(s).
-%
 %    o radius: the radius of the Gaussian, in pixels, not counting the center
 %      pixel.
 %
@@ -11971,23 +11732,10 @@
 %    o threshold: the threshold in pixels needed to apply the diffence amount.
 %
 */
-
 WandExport MagickBooleanType MagickUnsharpMaskImage(MagickWand *wand,
   const double radius,const double sigma,const double amount,
   const double threshold)
 {
-  MagickBooleanType
-    status;
-
-  status=MagickUnsharpMaskImageChannel(wand,DefaultChannels,radius,sigma,
-    amount,threshold);
-  return(status);
-}
-
-WandExport MagickBooleanType MagickUnsharpMaskImageChannel(MagickWand *wand,
-  const ChannelType channel,const double radius,const double sigma,
-  const double amount,const double threshold)
-{
   Image
     *unsharp_image;
 
@@ -11997,8 +11745,8 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  unsharp_image=UnsharpMaskImageChannel(wand->images,channel,radius,sigma,
-    amount,threshold,wand->exception);
+  unsharp_image=UnsharpMaskImage(wand->images,radius,sigma,amount,threshold,
+    wand->exception);
   if (unsharp_image == (Image *) NULL)
     return(MagickFalse);
   ReplaceImageInList(&wand->images,unsharp_image);
@@ -12148,7 +11896,7 @@
     QuantumFormat "," QuantumFormat "," QuantumFormat "," QuantumFormat,
     PixelGetRedQuantum(threshold),PixelGetGreenQuantum(threshold),
     PixelGetBlueQuantum(threshold),PixelGetOpacityQuantum(threshold));
-  status=WhiteThresholdImage(wand->images,thresholds);
+  status=WhiteThresholdImage(wand->images,thresholds,&wand->images->exception);
   if (status == MagickFalse)
     InheritException(wand->exception,&wand->images->exception);
   return(status);
diff --git a/MagickWand/magick-image.h b/MagickWand/magick-image.h
index 58ad340..c853ed7 100644
--- a/MagickWand/magick-image.h
+++ b/MagickWand/magick-image.h
@@ -72,12 +72,8 @@
 
 extern WandExport MagickBooleanType
   MagickAdaptiveBlurImage(MagickWand *,const double,const double),
-  MagickAdaptiveBlurImageChannel(MagickWand *,const ChannelType,const double,
-    const double),
   MagickAdaptiveResizeImage(MagickWand *,const size_t,const size_t),
   MagickAdaptiveSharpenImage(MagickWand *,const double,const double),
-  MagickAdaptiveSharpenImageChannel(MagickWand *,const ChannelType,const double,
-    const double),
   MagickAdaptiveThresholdImage(MagickWand *,const size_t,const size_t,
     const ssize_t),
   MagickAddImage(MagickWand *,const MagickWand *),
@@ -91,15 +87,12 @@
   MagickBlackThresholdImage(MagickWand *,const PixelWand *),
   MagickBlueShiftImage(MagickWand *,const double),
   MagickBlurImage(MagickWand *,const double,const double),
-  MagickBlurImageChannel(MagickWand *,const ChannelType,const double,
-    const double),
   MagickBorderImage(MagickWand *,const PixelWand *,const size_t,const size_t),
   MagickBrightnessContrastImage(MagickWand *,const double,const double),
   MagickCharcoalImage(MagickWand *,const double,const double),
   MagickChopImage(MagickWand *,const size_t,const size_t,const ssize_t,
     const ssize_t),
   MagickClampImage(MagickWand *),
-  MagickClampImageChannel(MagickWand *,const ChannelType),
   MagickClipImage(MagickWand *),
   MagickClipImagePath(MagickWand *,const char *,const MagickBooleanType),
   MagickClutImage(MagickWand *,const MagickWand *),
@@ -109,14 +102,11 @@
   MagickCommentImage(MagickWand *,const char *),
   MagickCompositeImage(MagickWand *,const MagickWand *,const CompositeOperator,
     const ssize_t,const ssize_t),
-  MagickCompositeImageChannel(MagickWand *,const ChannelType,const MagickWand *,    const CompositeOperator,const ssize_t,const ssize_t),
   MagickConstituteImage(MagickWand *,const size_t,const size_t,const char *,
     const StorageType,const void *),
   MagickContrastImage(MagickWand *,const MagickBooleanType),
   MagickContrastStretchImage(MagickWand *,const double,const double),
   MagickConvolveImage(MagickWand *,const size_t,const double *),
-  MagickConvolveImageChannel(MagickWand *,const ChannelType,const size_t,
-    const double *),
   MagickCropImage(MagickWand *,const size_t,const size_t,const ssize_t,
     const ssize_t),
   MagickCycleColormapImage(MagickWand *,const ssize_t),
@@ -139,7 +129,6 @@
   MagickExtentImage(MagickWand *,const size_t,const size_t,const ssize_t,
     const ssize_t),
   MagickFilterImage(MagickWand *,const KernelInfo *),
-  MagickFilterImageChannel(MagickWand *,const ChannelType,const KernelInfo *),
   MagickFlipImage(MagickWand *),
   MagickFloodfillPaintImage(MagickWand *,const PixelWand *,const double,
     const PixelWand *,const ssize_t,const ssize_t,const MagickBooleanType),
@@ -151,8 +140,6 @@
     const double *),
   MagickGammaImage(MagickWand *,const double),
   MagickGaussianBlurImage(MagickWand *,const double,const double),
-  MagickGaussianBlurImageChannel(MagickWand *,const ChannelType,const double,
-    const double),
   MagickGetImageAlphaChannel(MagickWand *),
   MagickGetImageBackgroundColor(MagickWand *,PixelWand *),
   MagickGetImageBluePrimary(MagickWand *,double *,double *),
@@ -194,11 +181,7 @@
   MagickModulateImage(MagickWand *,const double,const double,const double),
   MagickMorphologyImage(MagickWand *,MorphologyMethod,const ssize_t,
     KernelInfo *),
-  MagickMorphologyImageChannel(MagickWand *,const ChannelType,MorphologyMethod,
-    const ssize_t,KernelInfo *),
   MagickMotionBlurImage(MagickWand *,const double,const double,const double),
-  MagickMotionBlurImageChannel(MagickWand *,const ChannelType,const double,
-    const double,const double),
   MagickNegateImage(MagickWand *,const MagickBooleanType),
   MagickNewImage(MagickWand *,const size_t,const size_t,const PixelWand *),
   MagickNextImage(MagickWand *),
@@ -220,12 +203,9 @@
   MagickQuantizeImages(MagickWand *,const size_t,const ColorspaceType,
     const size_t,const MagickBooleanType,const MagickBooleanType),
   MagickRadialBlurImage(MagickWand *,const double),
-  MagickRadialBlurImageChannel(MagickWand *,const ChannelType,const double),
   MagickRaiseImage(MagickWand *,const size_t,const size_t,const ssize_t,
     const ssize_t,const MagickBooleanType),
   MagickRandomThresholdImage(MagickWand *,const double,const double),
-  MagickRandomThresholdImageChannel(MagickWand *,const ChannelType,const double,
-    const double),
   MagickReadImage(MagickWand *,const char *),
   MagickReadImageBlob(MagickWand *,const void *,const size_t),
   MagickReadImageFile(MagickWand *,FILE *),
@@ -244,8 +224,6 @@
   MagickSegmentImage(MagickWand *,const ColorspaceType,const MagickBooleanType,
     const double,const double),
   MagickSelectiveBlurImage(MagickWand *,const double,const double,const double),
-  MagickSelectiveBlurImageChannel(MagickWand *,const ChannelType,const double,
-    const double,const double),
   MagickSeparateImage(MagickWand *),
   MagickSepiaToneImage(MagickWand *,const double),
   MagickSetImage(MagickWand *,const MagickWand *),
@@ -294,8 +272,6 @@
   MagickShadowImage(MagickWand *,const double,const double,const ssize_t,
     const ssize_t),
   MagickSharpenImage(MagickWand *,const double,const double),
-  MagickSharpenImageChannel(MagickWand *,const ChannelType,const double,
-    const double),
   MagickShaveImage(MagickWand *,const size_t,const size_t),
   MagickShearImage(MagickWand *,const PixelWand *,const double,const double),
   MagickSigmoidalContrastImage(MagickWand *,const MagickBooleanType,
@@ -307,9 +283,7 @@
   MagickSpliceImage(MagickWand *,const size_t,const size_t,const ssize_t,
     const ssize_t),
   MagickSpreadImage(MagickWand *,const double),
-  MagickStatisticImage(MagickWand *,const ChannelType,const StatisticType,
-    const size_t,const size_t),
-  MagickStatisticImageChannel(MagickWand *,const StatisticType,const size_t,
+  MagickStatisticImage(MagickWand *,const StatisticType,const size_t,
     const size_t),
   MagickStripImage(MagickWand *),
   MagickSwirlImage(MagickWand *,const double),
@@ -324,8 +298,6 @@
   MagickUniqueImageColors(MagickWand *),
   MagickUnsharpMaskImage(MagickWand *,const double,const double,const double,
     const double),
-  MagickUnsharpMaskImageChannel(MagickWand *,const ChannelType,const double,
-    const double,const double,const double),
   MagickVignetteImage(MagickWand *,const double,const double,const ssize_t,
     const ssize_t),
   MagickWaveImage(MagickWand *,const double,const double),
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index ae5533d..5c83795 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -695,8 +695,8 @@
             flags=ParseGeometry(argv[i+1],&geometry_info);
             if ((flags & SigmaValue) == 0)
               geometry_info.sigma=1.0;
-            mogrify_image=AdaptiveBlurImageChannel(*image,channel,
-              geometry_info.rho,geometry_info.sigma,exception);
+            mogrify_image=AdaptiveBlurImage(*image,geometry_info.rho,
+              geometry_info.sigma,exception);
             break;
           }
         if (LocaleCompare("adaptive-resize",option+1) == 0)
@@ -719,8 +719,8 @@
             flags=ParseGeometry(argv[i+1],&geometry_info);
             if ((flags & SigmaValue) == 0)
               geometry_info.sigma=1.0;
-            mogrify_image=AdaptiveSharpenImageChannel(*image,channel,
-              geometry_info.rho,geometry_info.sigma,exception);
+            mogrify_image=AdaptiveSharpenImage(*image,geometry_info.rho,
+              geometry_info.sigma,exception);
             break;
           }
         if (LocaleCompare("affine",option+1) == 0)
@@ -866,8 +866,7 @@
               Black threshold image.
             */
             (void) SyncImageSettings(mogrify_info,*image);
-            (void) BlackThresholdImageChannel(*image,channel,argv[i+1],
-              exception);
+            (void) BlackThresholdImage(*image,argv[i+1],exception);
             InheritException(exception,&(*image)->exception);
             break;
           }
@@ -892,7 +891,7 @@
             flags=ParseGeometry(argv[i+1],&geometry_info);
             if ((flags & SigmaValue) == 0)
               geometry_info.sigma=1.0;
-            mogrify_image=BlurImageChannel(*image,channel,geometry_info.rho,
+            mogrify_image=BlurImage(*image,geometry_info.rho,
               geometry_info.sigma,exception);
             break;
           }
@@ -1009,7 +1008,7 @@
               Clamp image.
             */
             (void) SyncImageSettings(mogrify_info,*image);
-            (void) ClampImageChannel(*image,channel);
+            (void) ClampImage(*image);
             InheritException(exception,&(*image)->exception);
             break;
           }
@@ -1211,7 +1210,7 @@
             gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
             for (j=0; j < (ssize_t) (kernel->width*kernel->height); j++)
               kernel->values[j]*=gamma;
-            mogrify_image=FilterImageChannel(*image,channel,kernel,exception);
+            mogrify_image=FilterImage(*image,kernel,exception);
             kernel=DestroyKernelInfo(kernel);
             break;
           }
@@ -1727,8 +1726,8 @@
             flags=ParseGeometry(argv[i+1],&geometry_info);
             if ((flags & SigmaValue) == 0)
               geometry_info.sigma=1.0;
-            mogrify_image=GaussianBlurImageChannel(*image,channel,
-              geometry_info.rho,geometry_info.sigma,exception);
+            mogrify_image=GaussianBlurImage(*image,geometry_info.rho,
+              geometry_info.sigma,exception);
             break;
           }
         if (LocaleCompare("geometry",option+1) == 0)
@@ -2042,8 +2041,8 @@
             */
             (void) SyncImageSettings(mogrify_info,*image);
             (void) ParseGeometry(argv[i+1],&geometry_info);
-            mogrify_image=StatisticImageChannel(*image,channel,MedianStatistic,
-              (size_t) geometry_info.rho,(size_t) geometry_info.rho,exception);
+            mogrify_image=StatisticImage(*image,MedianStatistic,(size_t)
+              geometry_info.rho,(size_t) geometry_info.rho,exception);
             break;
           }
         if (LocaleCompare("mode",option+1) == 0)
@@ -2053,8 +2052,8 @@
             */
             (void) SyncImageSettings(mogrify_info,*image);
             (void) ParseGeometry(argv[i+1],&geometry_info);
-            mogrify_image=StatisticImageChannel(*image,channel,ModeStatistic,
-              (size_t) geometry_info.rho,(size_t) geometry_info.rho,exception);
+            mogrify_image=StatisticImage(*image,ModeStatistic,(size_t)
+              geometry_info.rho,(size_t) geometry_info.rho,exception);
             break;
           }
         if (LocaleCompare("modulate",option+1) == 0)
@@ -2122,8 +2121,8 @@
                 status=MagickFalse;
                 break;
               }
-            mogrify_image=MorphologyImageChannel(*image,channel,method,
-              iterations,kernel,exception);
+            mogrify_image=MorphologyImage(*image,method,iterations,kernel,
+              exception);
             kernel=DestroyKernelInfo(kernel);
             break;
           }
@@ -2136,8 +2135,8 @@
             flags=ParseGeometry(argv[i+1],&geometry_info);
             if ((flags & SigmaValue) == 0)
               geometry_info.sigma=1.0;
-            mogrify_image=MotionBlurImageChannel(*image,channel,
-              geometry_info.rho,geometry_info.sigma,geometry_info.xi,exception);
+            mogrify_image=MotionBlurImage(*image,geometry_info.rho,
+              geometry_info.sigma,geometry_info.xi,exception);
             break;
           }
         break;
@@ -2158,9 +2157,8 @@
             if (*option == '-')
               {
                 (void) ParseGeometry(argv[i+1],&geometry_info);
-                mogrify_image=StatisticImageChannel(*image,channel,
-                  NonpeakStatistic,(size_t) geometry_info.rho,(size_t)
-                  geometry_info.rho,exception);
+                mogrify_image=StatisticImage(*image,NonpeakStatistic,(size_t)
+                  geometry_info.rho,(size_t) geometry_info.rho,exception);
               }
             else
               {
@@ -2374,8 +2372,8 @@
               Radial blur image.
             */
             (void) SyncImageSettings(mogrify_info,*image);
-            mogrify_image=RadialBlurImageChannel(*image,channel,
-              InterpretLocaleValue(argv[i+1],(char **) NULL),exception);
+            mogrify_image=RadialBlurImage(*image,InterpretLocaleValue(argv[i+1],
+              (char **) NULL),exception);
             break;
           }
         if (LocaleCompare("raise",option+1) == 0)
@@ -2397,8 +2395,7 @@
               Threshold image.
             */
             (void) SyncImageSettings(mogrify_info,*image);
-            (void) RandomThresholdImageChannel(*image,channel,argv[i+1],
-              exception);
+            (void) RandomThresholdImage(*image,argv[i+1],exception);
             break;
           }
         if (LocaleCompare("recolor",option+1) == 0)
@@ -2423,8 +2420,8 @@
                   Composite region.
                 */
                 (void) CompositeImage(region_image,region_image->matte !=
-                     MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
-                     region_geometry.x,region_geometry.y);
+                   MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
+                   region_geometry.x,region_geometry.y);
                 InheritException(exception,&region_image->exception);
                 *image=DestroyImage(*image);
                 *image=region_image;
@@ -2576,8 +2573,8 @@
             flags=ParseGeometry(argv[i+1],&geometry_info);
             if ((flags & PercentValue) != 0)
               geometry_info.xi=(double) QuantumRange*geometry_info.xi/100.0;
-            mogrify_image=SelectiveBlurImageChannel(*image,channel,
-              geometry_info.rho,geometry_info.sigma,geometry_info.xi,exception);
+            mogrify_image=SelectiveBlurImage(*image,geometry_info.rho,
+              geometry_info.sigma,geometry_info.xi,exception);
             break;
           }
         if (LocaleCompare("separate",option+1) == 0)
@@ -2696,7 +2693,7 @@
             flags=ParseGeometry(argv[i+1],&geometry_info);
             if ((flags & SigmaValue) == 0)
               geometry_info.sigma=1.0;
-            mogrify_image=SharpenImageChannel(*image,channel,geometry_info.rho,
+            mogrify_image=SharpenImage(*image,geometry_info.rho,
               geometry_info.sigma,exception);
             break;
           }
@@ -2816,8 +2813,8 @@
             type=(StatisticType) ParseCommandOption(MagickStatisticOptions,
               MagickFalse,argv[i+1]);
             (void) ParseGeometry(argv[i+2],&geometry_info);
-            mogrify_image=StatisticImageChannel(*image,channel,type,(size_t)
-              geometry_info.rho,(size_t) geometry_info.sigma,exception);
+            mogrify_image=StatisticImage(*image,type,(size_t) geometry_info.rho,
+              (size_t) geometry_info.sigma,exception);
             break;
           }
         if (LocaleCompare("stretch",option+1) == 0)
@@ -2906,7 +2903,7 @@
               threshold=(double) QuantumRange/2;
             else
               threshold=SiPrefixToDouble(argv[i+1],QuantumRange);
-            (void) BilevelImageChannel(*image,channel,threshold);
+            (void) BilevelImage(*image,threshold);
             InheritException(exception,&(*image)->exception);
             break;
           }
@@ -3055,9 +3052,8 @@
               geometry_info.xi=1.0;
             if ((flags & PsiValue) == 0)
               geometry_info.psi=0.05;
-            mogrify_image=UnsharpMaskImageChannel(*image,channel,
-              geometry_info.rho,geometry_info.sigma,geometry_info.xi,
-              geometry_info.psi,exception);
+            mogrify_image=UnsharpMaskImage(*image,geometry_info.rho,
+              geometry_info.sigma,geometry_info.xi,geometry_info.psi,exception);
             break;
           }
         break;
@@ -3141,8 +3137,7 @@
               White threshold image.
             */
             (void) SyncImageSettings(mogrify_info,*image);
-            (void) WhiteThresholdImageChannel(*image,channel,argv[i+1],
-              exception);
+            (void) WhiteThresholdImage(*image,argv[i+1],exception);
             InheritException(exception,&(*image)->exception);
             break;
           }
@@ -3165,8 +3160,8 @@
       */
       (void) SyncImageSettings(mogrify_info,*image);
       (void) CompositeImage(region_image,region_image->matte !=
-           MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
-           region_geometry.x,region_geometry.y);
+         MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
+         region_geometry.x,region_geometry.y);
       InheritException(exception,&region_image->exception);
       *image=DestroyImage(*image);
       *image=region_image;
@@ -7231,9 +7226,6 @@
 WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
   const int argc,const char **argv,Image **images,ExceptionInfo *exception)
 {
-  ChannelType
-    channel;
-
   const char
     *option;
 
@@ -7268,7 +7260,6 @@
     return(MagickTrue);
   mogrify_info=CloneImageInfo(image_info);
   quantize_info=AcquireQuantizeInfo(mogrify_info);
-  channel=mogrify_info->channel;
   status=MagickTrue;
   for (i=0; i < (ssize_t) argc; i++)
   {
@@ -7341,12 +7332,16 @@
       {
         if (LocaleCompare("channel",option+1) == 0)
           {
+            ChannelType
+              channel;
+
             if (*option == '+')
               {
                 channel=DefaultChannels;
                 break;
               }
             channel=(ChannelType) ParseChannelOption(argv[i+1]);
+            SetPixelComponentMap(*images,channel);
             break;
           }
         if (LocaleCompare("clut",option+1) == 0)
@@ -7449,8 +7444,8 @@
                     (void) NegateImage(image->mask,MagickFalse);
                   }
               }
-            (void) CompositeImageChannel(image,channel,image->compose,
-              composite_image,geometry.x,geometry.y);
+            (void) CompositeImage(image,image->compose,composite_image,
+              geometry.x,geometry.y);
             if (mask_image != (Image *) NULL)
               mask_image=image->mask=DestroyImage(image->mask);
             composite_image=DestroyImage(composite_image);
diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs
index b434871..ba81692 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -7558,8 +7558,10 @@
             geometry_info.sigma=argument_list[2].real_reference;
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
-          image=BlurImageChannel(image,channel,geometry_info.rho,
-            geometry_info.sigma,exception);
+          PushPixelComponentMap(image,channel);
+          image=BlurImage(image,geometry_info.rho,geometry_info.sigma,
+            exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 7:  /* Chop */
@@ -7715,8 +7717,10 @@
             geometry_info.sigma=argument_list[2].real_reference;
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
-          image=StatisticImageChannel(image,channel,MedianStatistic,
-            (size_t) geometry_info.rho,(size_t) geometry_info.sigma,exception);
+          PushPixelComponentMap(image,channel);
+          image=StatisticImage(image,MedianStatistic,(size_t) geometry_info.rho,
+            (size_t) geometry_info.sigma,exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 19:  /* Minify */
@@ -7747,8 +7751,10 @@
             geometry_info.sigma=argument_list[2].real_reference;
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
-          image=StatisticImageChannel(image,channel,NonpeakStatistic,
-            (size_t) geometry_info.rho,(size_t) geometry_info.sigma,exception);
+          PushPixelComponentMap(image,channel);
+          image=StatisticImage(image,NonpeakStatistic,(size_t)
+            geometry_info.rho,(size_t) geometry_info.sigma,exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 22:  /* Roll */
@@ -7836,8 +7842,10 @@
             geometry_info.sigma=argument_list[2].real_reference;
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
-          image=SharpenImageChannel(image,channel,geometry_info.rho,
-            geometry_info.sigma,exception);
+          PushPixelComponentMap(image,channel);
+          image=SharpenImage(image,geometry_info.rho,geometry_info.sigma,
+            exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 28:  /* Shear */
@@ -8343,9 +8351,9 @@
             geometry.y);
           flags=ParseGravityGeometry(image,composite_geometry,&geometry,
             exception);
+          PushPixelComponentMap(image,channel);
           if (attribute_flag[8] == 0) /* no rotate */
-            CompositeImageChannel(image,channel,compose,composite_image,
-              geometry.x,geometry.y);
+            CompositeImage(image,compose,composite_image,geometry.x,geometry.y);
           else
             {
               /*
@@ -8355,8 +8363,7 @@
                 composite_image->columns)/2;
               geometry.y-=(ssize_t) (rotate_image->rows-
                 composite_image->rows)/2;
-              CompositeImageChannel(image,channel,compose,rotate_image,
-                geometry.x,geometry.y);
+              CompositeImage(image,compose,rotate_image,geometry.x,geometry.y);
               rotate_image=DestroyImage(rotate_image);
             }
           if (attribute_flag[10] != 0) /* mask */
@@ -8367,6 +8374,7 @@
               else
                 image->mask=DestroyImage(image->mask);
             }
+          PopPixelComponentMap(image);
           break;
         }
         case 36:  /* Contrast */
@@ -8998,7 +9006,9 @@
             channel=(ChannelType) argument_list[1].integer_reference;
           threshold=SiPrefixToDouble(argument_list[0].string_reference,
             QuantumRange);
-          (void) BilevelImageChannel(image,channel,threshold);
+          PushPixelComponentMap(image,channel);
+          (void) BilevelImage(image,threshold);
+          PopPixelComponentMap(image);
           break;
         }
         case 58:  /* Charcoal */
@@ -9105,8 +9115,10 @@
             geometry_info.sigma=argument_list[2].real_reference;
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
-          image=GaussianBlurImageChannel(image,channel,geometry_info.rho,
-            geometry_info.sigma,exception);
+          PushPixelComponentMap(image,channel);
+          image=GaussianBlurImage(image,geometry_info.rho,geometry_info.sigma,
+            exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 67:  /* Convolve */
@@ -9140,7 +9152,9 @@
             kernel[j]=(double) SvNV(*(av_fetch(av,j,0)));
           for ( ; j < (ssize_t) (order*order); j++)
             kernel[j]=0.0;
-          image=ConvolveImageChannel(image,channel,order,kernel,exception);
+          PushPixelComponentMap(image,channel);
+          image=ConvolveImage(image,order,kernel,exception);
+          PopPixelComponentMap(image);
           kernel=(double *) RelinquishMagickMemory(kernel);
           break;
         }
@@ -9238,8 +9252,10 @@
             geometry_info.psi=argument_list[4].real_reference;
           if (attribute_flag[5] != 0)
             channel=(ChannelType) argument_list[5].integer_reference;
-          image=UnsharpMaskImageChannel(image,channel,geometry_info.rho,
-            geometry_info.sigma,geometry_info.xi,geometry_info.psi,exception);
+          PushPixelComponentMap(image,channel);
+          image=UnsharpMaskImage(image,geometry_info.rho,geometry_info.sigma,
+            geometry_info.xi,geometry_info.psi,exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 70:  /* MotionBlur */
@@ -9261,8 +9277,10 @@
             geometry_info.xi=argument_list[3].real_reference;
           if (attribute_flag[4] != 0)
             channel=(ChannelType) argument_list[4].integer_reference;
-          image=MotionBlurImageChannel(image,channel,geometry_info.rho,
-            geometry_info.sigma,geometry_info.xi,exception);
+          PushPixelComponentMap(image,channel);
+          image=MotionBlurImage(image,geometry_info.rho,geometry_info.sigma,
+            geometry_info.xi,exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 71:  /* OrderedDither */
@@ -9552,8 +9570,10 @@
             argument_list[0].string_reference="50%";
           if (attribute_flag[2] != 0)
             channel=(ChannelType) argument_list[2].integer_reference;
-          BlackThresholdImageChannel(image,channel,
-            argument_list[0].string_reference,exception);
+          PushPixelComponentMap(image,channel);
+          BlackThresholdImage(image,argument_list[0].string_reference,
+            exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 81:  /* WhiteThreshold */
@@ -9562,8 +9582,10 @@
             argument_list[0].string_reference="50%";
           if (attribute_flag[2] != 0)
             channel=(ChannelType) argument_list[2].integer_reference;
-          WhiteThresholdImageChannel(image,channel,
-            argument_list[0].string_reference,exception);
+          PushPixelComponentMap(image,channel);
+          WhiteThresholdImage(image,argument_list[0].string_reference,
+            exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 82:  /* RadialBlur */
@@ -9579,8 +9601,9 @@
             geometry_info.rho=argument_list[1].real_reference;
           if (attribute_flag[2] != 0)
             channel=(ChannelType) argument_list[2].integer_reference;
-          image=RadialBlurImageChannel(image,channel,geometry_info.rho,
-            exception);
+          PushPixelComponentMap(image,channel);
+          image=RadialBlurImage(image,geometry_info.rho,exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 83:  /* Thumbnail */
@@ -9856,8 +9879,10 @@
             geometry_info.sigma=argument_list[2].real_reference;
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
-          image=AdaptiveSharpenImageChannel(image,channel,geometry_info.rho,
+          PushPixelComponentMap(image,channel);
+          image=AdaptiveSharpenImage(image,geometry_info.rho,
             geometry_info.sigma,exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 99:  /* Transpose */
@@ -9929,8 +9954,10 @@
             geometry_info.sigma=argument_list[2].real_reference;
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
-          image=AdaptiveBlurImageChannel(image,channel,geometry_info.rho,
-            geometry_info.sigma,exception);
+          PushPixelComponentMap(image,channel);
+          image=AdaptiveBlurImage(image,geometry_info.rho,geometry_info.sigma,
+            exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 103:  /* Sketch */
@@ -10353,8 +10380,10 @@
             geometry_info.xi=argument_list[3].integer_reference;;
           if (attribute_flag[4] != 0)
             channel=(ChannelType) argument_list[4].integer_reference;
-          image=SelectiveBlurImageChannel(image,channel,geometry_info.rho,
-            geometry_info.sigma,geometry_info.xi,exception);
+          PushPixelComponentMap(image,channel);
+          image=SelectiveBlurImage(image,geometry_info.rho,geometry_info.sigma,
+            geometry_info.xi,exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 122:  /* HaldClut */
@@ -10446,7 +10475,9 @@
         {
           if (attribute_flag[0] != 0)
             channel=(ChannelType) argument_list[0].integer_reference;
-          (void) ClampImageChannel(image,channel);
+          PushPixelComponentMap(image,channel);
+          (void) ClampImage(image);
+          PopPixelComponentMap(image);
           break;
         }
         case 131:  /* Filter */
@@ -10464,7 +10495,9 @@
           if (attribute_flag[2] != 0)
             image->bias=SiPrefixToDouble(argument_list[2].string_reference,
               QuantumRange);
-          image=FilterImageChannel(image,channel,kernel,exception);
+          PushPixelComponentMap(image,channel);
+          image=FilterImage(image,kernel,exception);
+          PopPixelComponentMap(image);
           kernel=DestroyKernelInfo(kernel);
           break;
         }
@@ -10519,8 +10552,9 @@
           iterations=1;
           if (attribute_flag[3] != 0)
             iterations=argument_list[4].integer_reference;
-          image=MorphologyImageChannel(image,channel,method,iterations,kernel,
-            exception);
+          PushPixelComponentMap(image,channel);
+          image=MorphologyImage(image,method,iterations,kernel,exception);
+          PopPixelComponentMap(image);
           kernel=DestroyKernelInfo(kernel);
           break;
         }
@@ -10594,8 +10628,10 @@
             geometry_info.sigma=argument_list[2].real_reference;
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
-          image=StatisticImageChannel(image,channel,ModeStatistic,
-            (size_t) geometry_info.rho,(size_t) geometry_info.sigma,exception);
+          PushPixelComponentMap(image,channel);
+          image=StatisticImage(image,ModeStatistic,(size_t) geometry_info.rho,
+            (size_t) geometry_info.sigma,exception);
+          PopPixelComponentMap(image);
           break;
         }
         case 137:  /* Statistic */
@@ -10619,8 +10655,10 @@
             channel=(ChannelType) argument_list[3].integer_reference;
           if (attribute_flag[4] != 0)
             statistic=(StatisticType) argument_list[4].integer_reference;
-          image=StatisticImageChannel(image,channel,statistic,
-            (size_t) geometry_info.rho,(size_t) geometry_info.sigma,exception);
+          PushPixelComponentMap(image,channel);
+          image=StatisticImage(image,statistic,(size_t) geometry_info.rho,
+            (size_t) geometry_info.sigma,exception);
+          PopPixelComponentMap(image);
           break;
         }
       }
@@ -10630,7 +10668,7 @@
         {
           /*
             Composite region.
-          */
+          */ 
           status=CompositeImage(region_image,CopyCompositeOp,image,
             region_info.x,region_info.y);
           (void) status;
diff --git a/coders/msl.c b/coders/msl.c
index c10a29b..0e8ea07 100644
--- a/coders/msl.c
+++ b/coders/msl.c
@@ -1231,9 +1231,10 @@
                 }
               }
             }
-          blur_image=BlurImageChannel(msl_info->image[n],channel,
-            geometry_info.rho,geometry_info.sigma,
-            &msl_info->image[n]->exception);
+          PushPixelComponentMap(msl_info->image[n],channel);
+          blur_image=BlurImage(msl_info->image[n],geometry_info.rho,
+            geometry_info.sigma,&msl_info->image[n]->exception);
+          PopPixelComponentMap(msl_info->image[n]);
           if (blur_image == (Image *) NULL)
             break;
           msl_info->image[n]=DestroyImage(msl_info->image[n]);
@@ -2054,9 +2055,9 @@
             geometry.y);
           flags=ParseGravityGeometry(image,composite_geometry,&geometry,
             &exception);
+          PushPixelComponentMap(image,channel);
           if (rotate_image == (Image *) NULL)
-            CompositeImageChannel(image,channel,compose,composite_image,
-              geometry.x,geometry.y);
+            CompositeImage(image,compose,composite_image,geometry.x,geometry.y);
           else
             {
               /*
@@ -2065,10 +2066,10 @@
               geometry.x-=(ssize_t) (rotate_image->columns-
                 composite_image->columns)/2;
               geometry.y-=(ssize_t) (rotate_image->rows-composite_image->rows)/2;
-              CompositeImageChannel(image,channel,compose,rotate_image,
-                geometry.x,geometry.y);
+              CompositeImage(image,compose,rotate_image,geometry.x,geometry.y);
               rotate_image=DestroyImage(rotate_image);
             }
+          PopPixelComponentMap(image);
           composite_image=DestroyImage(composite_image);
           break;
         }
@@ -7070,9 +7071,7 @@
           process image.
         */
         {
-        BilevelImageChannel(msl_info->image[n],
-          (ChannelType) ((ssize_t) (CompositeChannels &~ (ssize_t) OpacityChannel)),
-          threshold);
+          BilevelImage(msl_info->image[n],threshold);
         break;
         }
       }