diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c
index c863e0c..cab87d9 100644
--- a/MagickCore/quantize.c
+++ b/MagickCore/quantize.c
@@ -328,10 +328,10 @@
   *GetNodeInfo(CubeInfo *,const size_t,const size_t,NodeInfo *);
 
 static MagickBooleanType
-  AssignImageColors(Image *,CubeInfo *),
+  AssignImageColors(Image *,CubeInfo *,ExceptionInfo *),
   ClassifyImageColors(CubeInfo *,const Image *,ExceptionInfo *),
   DitherImage(Image *,CubeInfo *),
-  SetGrayscaleImage(Image *);
+  SetGrayscaleImage(Image *,ExceptionInfo *);
 
 static size_t
   DefineImageColormap(Image *,CubeInfo *,NodeInfo *);
@@ -497,7 +497,8 @@
   return(id);
 }
 
-static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info)
+static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info,
+  ExceptionInfo *exception)
 {
 #define AssignImageTag  "Assign/Image"
 
@@ -516,7 +517,7 @@
         (IsRGBColorspace(image->colorspace) == MagickFalse) &&
         (image->colorspace != CMYColorspace))
       (void) TransformImageColorspace((Image *) image,RGBColorspace);
-  if (AcquireImageColormap(image,cube_info->colors) == MagickFalse)
+  if (AcquireImageColormap(image,cube_info->colors,exception) == MagickFalse)
     ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
       image->filename);
   image->colors=0;
@@ -1160,14 +1161,18 @@
 %
 %  The format of the CompressImageColormap method is:
 %
-%      MagickBooleanType CompressImageColormap(Image *image)
+%      MagickBooleanType CompressImageColormap(Image *image,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
-MagickExport MagickBooleanType CompressImageColormap(Image *image)
+MagickExport MagickBooleanType CompressImageColormap(Image *image,
+  ExceptionInfo *exception)
 {
   QuantizeInfo
     quantize_info;
@@ -1181,7 +1186,7 @@
   GetQuantizeInfo(&quantize_info);
   quantize_info.number_colors=image->colors;
   quantize_info.tree_depth=MaxTreeDepth;
-  return(QuantizeImage(&quantize_info,image));
+  return(QuantizeImage(&quantize_info,image,exception));
 }
 
 /*
@@ -2265,7 +2270,7 @@
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%     P o s t e r i z e I m a g e C h a n n e l                               %
+%     P o s t e r i z e I m a g e                                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
@@ -2277,7 +2282,7 @@
 %  The format of the PosterizeImage method is:
 %
 %      MagickBooleanType PosterizeImage(Image *image,const size_t levels,
-%        const MagickBooleanType dither)
+%        const MagickBooleanType dither,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2289,6 +2294,8 @@
 %    o dither: Set this integer value to something other than zero to dither
 %      the mapped image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 static inline ssize_t MagickRound(MagickRealType x)
@@ -2302,7 +2309,7 @@
 }
 
 MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels,
-  const MagickBooleanType dither)
+  const MagickBooleanType dither,ExceptionInfo *exception)
 {
 #define PosterizeImageTag  "Posterize/Image"
 #define PosterizePixel(pixel) (Quantum) (QuantumRange*(MagickRound( \
@@ -2311,9 +2318,6 @@
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -2356,7 +2360,6 @@
   */
   status=MagickTrue;
   progress=0;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   #pragma omp parallel for schedule(dynamic,4) shared(progress,status)
@@ -2415,7 +2418,7 @@
     levels,MaxColormapSize+1);
   quantize_info->dither=dither;
   quantize_info->tree_depth=MaxTreeDepth;
-  status=QuantizeImage(quantize_info,image);
+  status=QuantizeImage(quantize_info,image,exception);
   quantize_info=DestroyQuantizeInfo(quantize_info);
   return(status);
 }
@@ -2594,7 +2597,7 @@
 %  The format of the QuantizeImage method is:
 %
 %      MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info,
-%        Image *image)
+%        Image *image,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2602,6 +2605,8 @@
 %
 %    o image: the image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 static MagickBooleanType DirectToColormapImage(Image *image,
@@ -2624,7 +2629,7 @@
 
   status=MagickTrue;
   number_colors=(size_t) (image->columns*image->rows);
-  if (AcquireImageColormap(image,number_colors) == MagickFalse)
+  if (AcquireImageColormap(image,number_colors,exception) == MagickFalse)
     ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
       image->filename);
   if (image->colors != number_colors)
@@ -2667,7 +2672,7 @@
 }
 
 MagickExport MagickBooleanType QuantizeImage(const QuantizeInfo *quantize_info,
-  Image *image)
+  Image *image,ExceptionInfo *exception)
 {
   CubeInfo
     *cube_info;
@@ -2694,7 +2699,7 @@
     (void) DirectToColormapImage(image,&image->exception);
   if ((IsImageGray(image,&image->exception) != MagickFalse) &&
       (image->matte == MagickFalse))
-    (void) SetGrayscaleImage(image);
+    (void) SetGrayscaleImage(image,exception);
   if ((image->storage_class == PseudoClass) &&
       (image->colors <= maximum_colors))
     return(MagickTrue);
@@ -2729,7 +2734,7 @@
         Reduce the number of colors in the image.
       */
       ReduceImageColors(image,cube_info);
-      status=AssignImageColors(image,cube_info);
+      status=AssignImageColors(image,cube_info,exception);
     }
   DestroyCubeInfo(cube_info);
   return(status);
@@ -2754,7 +2759,7 @@
 %  The format of the QuantizeImages method is:
 %
 %      MagickBooleanType QuantizeImages(const QuantizeInfo *quantize_info,
-%        Image *images)
+%        Image *images,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2762,9 +2767,11 @@
 %
 %    o images: Specifies a pointer to a list of Image structures.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType QuantizeImages(const QuantizeInfo *quantize_info,
-  Image *images)
+  Image *images,ExceptionInfo *exception)
 {
   CubeInfo
     *cube_info;
@@ -2798,7 +2805,7 @@
       /*
         Handle a single image with QuantizeImage.
       */
-      status=QuantizeImage(quantize_info,images);
+      status=QuantizeImage(quantize_info,images,exception);
       return(status);
     }
   status=MagickFalse;
@@ -2859,7 +2866,7 @@
       {
         progress_monitor=SetImageProgressMonitor(image,(MagickProgressMonitor)
           NULL,image->client_data);
-        status=AssignImageColors(image,cube_info);
+        status=AssignImageColors(image,cube_info,exception);
         if (status == MagickFalse)
           break;
         (void) SetImageProgressMonitor(image,progress_monitor,
@@ -3031,7 +3038,7 @@
 %  The format of the RemapImage method is:
 %
 %      MagickBooleanType RemapImage(const QuantizeInfo *quantize_info,
-%        Image *image,const Image *remap_image)
+%        Image *image,const Image *remap_image,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -3041,9 +3048,11 @@
 %
 %    o remap_image: the reference image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType RemapImage(const QuantizeInfo *quantize_info,
-  Image *image,const Image *remap_image)
+  Image *image,const Image *remap_image,ExceptionInfo *exception)
 {
   CubeInfo
     *cube_info;
@@ -3072,7 +3081,7 @@
         Classify image colors from the reference image.
       */
       cube_info->quantize_info->number_colors=cube_info->colors;
-      status=AssignImageColors(image,cube_info);
+      status=AssignImageColors(image,cube_info,exception);
     }
   DestroyCubeInfo(cube_info);
   return(status);
@@ -3095,7 +3104,7 @@
 %  The format of the RemapImage method is:
 %
 %      MagickBooleanType RemapImages(const QuantizeInfo *quantize_info,
-%        Image *images,Image *remap_image)
+%        Image *images,Image *remap_image,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -3105,9 +3114,11 @@
 %
 %    o remap_image: the reference image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType RemapImages(const QuantizeInfo *quantize_info,
-  Image *images,const Image *remap_image)
+  Image *images,const Image *remap_image,ExceptionInfo *exception)
 {
   CubeInfo
     *cube_info;
@@ -3128,7 +3139,7 @@
       /*
         Create a global colormap for an image sequence.
       */
-      status=QuantizeImages(quantize_info,images);
+      status=QuantizeImages(quantize_info,images,exception);
       return(status);
     }
   /*
@@ -3139,7 +3150,7 @@
   if (cube_info == (CubeInfo *) NULL)
     ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
       image->filename);
-  status=ClassifyImageColors(cube_info,remap_image,&image->exception);
+  status=ClassifyImageColors(cube_info,remap_image,exception);
   if (status != MagickFalse)
     {
       /*
@@ -3149,7 +3160,7 @@
       image=images;
       for ( ; image != (Image *) NULL; image=GetNextImageInList(image))
       {
-        status=AssignImageColors(image,cube_info);
+        status=AssignImageColors(image,cube_info,exception);
         if (status == MagickFalse)
           break;
       }
@@ -3173,12 +3184,14 @@
 %
 %  The format of the SetGrayscaleImage method is:
 %
-%      MagickBooleanType SetGrayscaleImage(Image *image)
+%      MagickBooleanType SetGrayscaleImage(Image *image,ExceptionInfo *exeption)
 %
 %  A description of each parameter follows:
 %
 %    o image: The image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -3205,14 +3218,12 @@
 }
 #endif
 
-static MagickBooleanType SetGrayscaleImage(Image *image)
+static MagickBooleanType SetGrayscaleImage(Image *image,
+  ExceptionInfo *exception)
 {
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -3238,17 +3249,13 @@
       image->filename);
   if (image->storage_class != PseudoClass)
     {
-      ExceptionInfo
-        *exception;
-
       for (i=0; i <= (ssize_t) MaxMap; i++)
         colormap_index[i]=(-1);
-      if (AcquireImageColormap(image,MaxMap+1) == MagickFalse)
+      if (AcquireImageColormap(image,MaxMap+1,exception) == MagickFalse)
         ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
           image->filename);
       image->colors=0;
       status=MagickTrue;
-      exception=(&image->exception);
       image_view=AcquireCacheView(image);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
       #pragma omp parallel for schedule(dynamic,4) shared(status)
@@ -3323,7 +3330,6 @@
   image->colormap=(PixelPacket *) RelinquishMagickMemory(image->colormap);
   image->colormap=colormap;
   status=MagickTrue;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   #pragma omp parallel for schedule(dynamic,4) shared(status)