By default, auto-level all channels equally
diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c
index dc6ec49..1776e0f 100644
--- a/MagickCore/constitute.c
+++ b/MagickCore/constitute.c
@@ -1263,7 +1263,8 @@
   if (filename != (const char *) NULL)
     for (p=images; p != (Image *) NULL; p=GetNextImageInList(p))
       (void) CopyMagickString(p->filename,filename,MagickPathExtent);
-  (void) CopyMagickString(write_info->filename,images->filename,MagickPathExtent);
+  (void) CopyMagickString(write_info->filename,images->filename,
+    MagickPathExtent);
   sans_exception=AcquireExceptionInfo();
   (void) SetImageInfo(write_info,(unsigned int) GetImageListLength(images),
     sans_exception);
diff --git a/MagickCore/histogram.c b/MagickCore/histogram.c
index c952dc6..9382676 100644
--- a/MagickCore/histogram.c
+++ b/MagickCore/histogram.c
@@ -904,10 +904,22 @@
   MagickStatusType
     status;
 
+  status=MagickTrue;
+  if (image->channel_mask == DefaultChannels)
+    {
+      /*
+        Auto-level all channels equally.
+      */
+      (void) GetImageRange(image,&min,&max,exception);
+      min+=black;
+      max-=white;
+      if (fabs(min-max) >= MagickEpsilon)
+        status&=LevelImage(image,min,max,gamma,exception);
+      return(status != 0 ? MagickTrue : MagickFalse);
+    }
   /*
     Auto-level each channel.
   */
-  status=MagickTrue;
   for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
   {
     ChannelType