diff --git a/MagickCore/animate.c b/MagickCore/animate.c
index b79c0d6..97a3df1 100644
--- a/MagickCore/animate.c
+++ b/MagickCore/animate.c
@@ -496,7 +496,7 @@
             *title;
 
           title=InterpretImageProperties(resource_info->image_info,*image,
-            resource_info->title);
+            resource_info->title,exception);
           (void) CopyMagickString(windows->image.name,title,MaxTextExtent);
           title=DestroyString(title);
         }
@@ -889,7 +889,8 @@
           next=GetNextImageInList(next);
         }
         if (next != (Image *) NULL)
-          (void) RemapImages(resources.quantize_info,images,(Image *) NULL);
+          (void) RemapImages(resources.quantize_info,images,(Image *) NULL,
+            exception);
       }
   /*
     Sort images by increasing scene number.
@@ -915,7 +916,7 @@
         (visual_info->klass == TrueColor) ||
         (visual_info->klass == DirectColor))
       (void) SetImageType(image_list[scene],image_list[scene]->matte ==
-        MagickFalse ? TrueColorType : TrueColorMatteType);
+        MagickFalse ? TrueColorType : TrueColorMatteType,exception);
     if ((display_image->columns < image_list[scene]->columns) &&
         (display_image->rows < image_list[scene]->rows))
       display_image=image_list[scene];
@@ -923,7 +924,7 @@
   if ((resource_info->map_type != (char *) NULL) ||
       (visual_info->klass == TrueColor) || (visual_info->klass == DirectColor))
     (void) SetImageType(display_image,display_image->matte == MagickFalse ?
-      TrueColorType : TrueColorMatteType);
+      TrueColorType : TrueColorMatteType,exception);
   XMakeStandardColormap(display,visual_info,&resources,display_image,map_info,
     &pixel);
   /*
@@ -1511,7 +1512,7 @@
         }
         if (next != (Image *) NULL)
           (void) RemapImages(resource_info->quantize_info,images,
-            (Image *) NULL);
+            (Image *) NULL,exception);
       }
   /*
     Sort images by increasing scene number.
@@ -1537,7 +1538,7 @@
         (visual_info->klass == TrueColor) ||
         (visual_info->klass == DirectColor))
       (void) SetImageType(image_list[scene],image_list[scene]->matte ==
-        MagickFalse ? TrueColorType : TrueColorMatteType);
+        MagickFalse ? TrueColorType : TrueColorMatteType,exception);
     if ((display_image->columns < image_list[scene]->columns) &&
         (display_image->rows < image_list[scene]->rows))
       display_image=image_list[scene];
@@ -1651,7 +1652,7 @@
         *title;
 
       title=InterpretImageProperties(resource_info->image_info,display_image,
-        resource_info->title);
+        resource_info->title,exception);
       (void) CopyMagickString(windows->image.name,title,MaxTextExtent);
       (void) CopyMagickString(windows->image.icon_name,title,MaxTextExtent);
       title=DestroyString(title);
@@ -1962,7 +1963,7 @@
           *title;
 
         title=InterpretImageProperties(resource_info->image_info,
-          image_list[scene],resource_info->title);
+          image_list[scene],resource_info->title,exception);
         (void) CopyMagickString(windows->image.name,title,MaxTextExtent);
         title=DestroyString(title);
       }
@@ -2100,7 +2101,7 @@
                     *title;
 
                   title=InterpretImageProperties(resource_info->image_info,
-                    image,resource_info->title);
+                    image,resource_info->title,exception);
                   (void) CopyMagickString(windows->image.name,title,
                     MaxTextExtent);
                   title=DestroyString(title);
diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c
index 0def9c9..5559c98 100644
--- a/MagickCore/annotate.c
+++ b/MagickCore/annotate.c
@@ -463,7 +463,7 @@
         (void) FormatLocaleString(primitive,MaxTextExtent,
           "rectangle 0,0 %g,%.20g",metrics.origin.x,(double) height);
         (void) CloneString(&undercolor_info->primitive,primitive);
-        (void) DrawImage(image,undercolor_info);
+        (void) DrawImage(image,undercolor_info,exception);
         (void) DestroyDrawInfo(undercolor_info);
       }
     annotate_info->affine.tx=offset.x;
@@ -475,7 +475,7 @@
         annotate_info->affine.ty-=(draw_info->affine.sy*(metrics.ascent+
           metrics.descent-metrics.underline_position));
         (void) CloneString(&annotate_info->primitive,primitive);
-        (void) DrawImage(image,annotate_info);
+        (void) DrawImage(image,annotate_info,exception);
       }
     else
       if (annotate->decorate == UnderlineDecoration)
@@ -483,7 +483,7 @@
           annotate_info->affine.ty-=(draw_info->affine.sy*
             metrics.underline_position);
           (void) CloneString(&annotate_info->primitive,primitive);
-          (void) DrawImage(image,annotate_info);
+          (void) DrawImage(image,annotate_info,exception);
         }
     /*
       Annotate image with text.
@@ -496,7 +496,7 @@
         annotate_info->affine.ty-=(draw_info->affine.sy*(height+
           metrics.underline_position+metrics.descent)/2.0);
         (void) CloneString(&annotate_info->primitive,primitive);
-        (void) DrawImage(image,annotate_info);
+        (void) DrawImage(image,annotate_info,exception);
       }
   }
   /*
@@ -1476,7 +1476,7 @@
           annotate_info->affine.tx=offset->x;
           annotate_info->affine.ty=offset->y;
           (void) ConcatenateString(&annotate_info->primitive,"'");
-          (void) DrawImage(image,annotate_info);
+          (void) DrawImage(image,annotate_info,exception);
         }
       }
   /*
diff --git a/MagickCore/colormap.c b/MagickCore/colormap.c
index 265a11c..75f47b6 100644
--- a/MagickCore/colormap.c
+++ b/MagickCore/colormap.c
@@ -87,7 +87,7 @@
 %  The format of the AcquireImageColormap method is:
 %
 %      MagickBooleanType AcquireImageColormap(Image *image,
-%        const size_t colors)
+%        const size_t colors,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -95,6 +95,8 @@
 %
 %    o colors: the number of colors in the image colormap.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 static inline size_t MagickMax(const size_t x,
@@ -114,7 +116,7 @@
 }
 
 MagickExport MagickBooleanType AcquireImageColormap(Image *image,
-  const size_t colors)
+  const size_t colors,ExceptionInfo *exception)
 {
   register ssize_t
     i;
@@ -171,7 +173,8 @@
 %
 %  The format of the CycleColormapImage method is:
 %
-%      MagickBooleanType CycleColormapImage(Image *image,const ssize_t displace)
+%      MagickBooleanType CycleColormapImage(Image *image,const ssize_t displace,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -179,16 +182,15 @@
 %
 %    o displace:  displace the colormap this amount.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType CycleColormapImage(Image *image,
-  const ssize_t displace)
+  const ssize_t displace,ExceptionInfo *exception)
 {
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -200,9 +202,8 @@
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   if (image->storage_class == DirectClass)
-    (void) SetImageType(image,PaletteType);
+    (void) SetImageType(image,PaletteType,exception);
   status=MagickTrue;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
 #if defined(MAGICKCORE_OPENMP_SUPPORT) 
   #pragma omp parallel for schedule(dynamic,4) shared(status)
@@ -258,12 +259,15 @@
 %
 %  The format of the SortColormapByIntensity method is:
 %
-%      MagickBooleanType SortColormapByIntensity(Image *image)
+%      MagickBooleanType SortColormapByIntensity(Image *image,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: A pointer to an Image structure.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -290,14 +294,12 @@
 }
 #endif
 
-MagickExport MagickBooleanType SortColormapByIntensity(Image *image)
+MagickExport MagickBooleanType SortColormapByIntensity(Image *image,
+  ExceptionInfo *exception)
 {
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -346,7 +348,6 @@
   for (i=0; i < (ssize_t) image->colors; i++)
     pixels[(ssize_t) image->colormap[i].alpha]=(unsigned short) i;
   status=MagickTrue;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
   for (y=0; y < (ssize_t) image->rows; y++)
   {
diff --git a/MagickCore/colormap.h b/MagickCore/colormap.h
index d81fa66..8d5b3cb 100644
--- a/MagickCore/colormap.h
+++ b/MagickCore/colormap.h
@@ -23,9 +23,9 @@
 #endif
 
 extern MagickExport MagickBooleanType
-  AcquireImageColormap(Image *,const size_t),
-  CycleColormapImage(Image *,const ssize_t),
-  SortColormapByIntensity(Image *);
+  AcquireImageColormap(Image *,const size_t,ExceptionInfo *),
+  CycleColormapImage(Image *,const ssize_t,ExceptionInfo *),
+  SortColormapByIntensity(Image *,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index 5729719..22cf788 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -1458,7 +1458,7 @@
 %  The format of the IsImagesEqual method is:
 %
 %      MagickBooleanType IsImagesEqual(Image *image,
-%        const Image *reconstruct_image)
+%        const Image *reconstruct_image,ExceptionInfo *exception)
 %
 %  A description of each parameter follows.
 %
@@ -1466,17 +1466,16 @@
 %
 %    o reconstruct_image: the reconstruct image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType IsImagesEqual(Image *image,
-  const Image *reconstruct_image)
+  const Image *reconstruct_image,ExceptionInfo *exception)
 {
   CacheView
     *image_view,
     *reconstruct_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -1500,7 +1499,6 @@
   maximum_error=0.0;
   mean_error_per_pixel=0.0;
   mean_error=0.0;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
   reconstruct_view=AcquireCacheView(reconstruct_image);
   for (y=0; y < (ssize_t) image->rows; y++)
diff --git a/MagickCore/compare.h b/MagickCore/compare.h
index 714fea4..15944b7 100644
--- a/MagickCore/compare.h
+++ b/MagickCore/compare.h
@@ -50,7 +50,7 @@
 extern MagickExport MagickBooleanType
   GetImageDistortion(Image *,const Image *,const MetricType,double *,
     ExceptionInfo *),
-  IsImagesEqual(Image *,const Image *);
+  IsImagesEqual(Image *,const Image *,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/MagickCore/compress.c b/MagickCore/compress.c
index d29dd3b..812537d 100644
--- a/MagickCore/compress.c
+++ b/MagickCore/compress.c
@@ -361,12 +361,15 @@
 %
 %  The format of the HuffmanDecodeImage method is:
 %
-%      MagickBooleanType HuffmanDecodeImage(Image *image)
+%      MagickBooleanType HuffmanDecodeImage(Image *image,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %    o image: the image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 static inline size_t MagickMax(const size_t x,const size_t y)
@@ -383,7 +386,8 @@
   return(y);
 }
 
-MagickExport MagickBooleanType HuffmanDecodeImage(Image *image)
+MagickExport MagickBooleanType HuffmanDecodeImage(Image *image,
+  ExceptionInfo *exception)
 {
 #define HashSize  1021
 #define MBHashA  293
@@ -423,9 +427,6 @@
   const HuffmanTable
     *entry;
 
-  ExceptionInfo
-    *exception;
-
   HuffmanTable
     **mb_hash,
     **mw_hash;
@@ -507,7 +508,6 @@
   image->x_resolution=204.0;
   image->y_resolution=196.0;
   image->units=PixelsPerInchResolution;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
   for (y=0; ((y < (ssize_t) image->rows) && (null_lines < 3)); )
   {
@@ -673,7 +673,7 @@
 %  The format of the HuffmanEncodeImage method is:
 %
 %      MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info,
-%        Image *image,Image *inject_image)
+%        Image *image,Image *inject_image,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -683,9 +683,11 @@
 %
 %    o inject_image: inject into the image stream.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info,
-  Image *image,Image *inject_image)
+  Image *image,Image *inject_image,ExceptionInfo *exception)
 {
 #define HuffmanOutputCode(entry)  \
 {  \
@@ -716,9 +718,6 @@
   const HuffmanTable
     *entry;
 
-  ExceptionInfo
-    *exception;
-
   int
     k,
     runlength;
@@ -780,7 +779,7 @@
       scanline=(unsigned char *) RelinquishMagickMemory(scanline);
       return(MagickFalse);
     }
-  (void) SetImageType(huffman_image,BilevelType);
+  (void) SetImageType(huffman_image,BilevelType,exception);
   byte='\0';
   bit=(unsigned char) 0x80;
   if (LocaleCompare(image_info->magick,"FAX") != 0)
@@ -797,7 +796,6 @@
   /*
     Compress to 1D Huffman pixels.
   */
-  exception=(&huffman_image->exception);
   q=scanline;
   for (y=0; y < (ssize_t) huffman_image->rows; y++)
   {
@@ -915,7 +913,7 @@
 %  The format of the LZWEncodeImage method is:
 %
 %      MagickBooleanType LZWEncodeImage(Image *image,const size_t length,
-%        unsigned char *pixels)
+%        unsigned char *pixels,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -926,9 +924,11 @@
 %    o pixels: the address of an unsigned array of characters containing the
 %      pixels to compress.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType LZWEncodeImage(Image *image,const size_t length,
-  unsigned char *pixels)
+  unsigned char *pixels,ExceptionInfo *exception)
 {
 #define LZWClr  256UL  /* Clear Table Marker */
 #define LZWEod  257UL  /* End of Data marker */
@@ -1090,7 +1090,7 @@
 %
 */
 MagickExport MagickBooleanType PackbitsEncodeImage(Image *image,
-  const size_t length,unsigned char *pixels)
+  const size_t length,unsigned char *pixels,ExceptionInfo *exception)
 {
   int
     count;
@@ -1212,7 +1212,7 @@
 %  The format of the ZLIBEncodeImage method is:
 %
 %      MagickBooleanType ZLIBEncodeImage(Image *image,const size_t length,
-%        unsigned char *pixels)
+%        unsigned char *pixels,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -1224,6 +1224,8 @@
 %    o pixels: the address of an unsigned array of characters containing the
 %      pixels to compress.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 static voidpf AcquireZIPMemory(voidpf context,unsigned int items,
@@ -1240,7 +1242,7 @@
 }
 
 MagickExport MagickBooleanType ZLIBEncodeImage(Image *image,const size_t length,
-  unsigned char *pixels)
+  unsigned char *pixels,ExceptionInfo *exception)
 {
   int
     status;
diff --git a/MagickCore/compress.h b/MagickCore/compress.h
index 313ee3b..4b7fcbc 100644
--- a/MagickCore/compress.h
+++ b/MagickCore/compress.h
@@ -52,11 +52,11 @@
   Ascii85Info;
 
 extern MagickExport MagickBooleanType
-  HuffmanDecodeImage(Image *),
-  HuffmanEncodeImage(const ImageInfo *,Image *,Image *),
-  LZWEncodeImage(Image *,const size_t,unsigned char *),
-  PackbitsEncodeImage(Image *,const size_t,unsigned char *),
-  ZLIBEncodeImage(Image *,const size_t,unsigned char *);
+  HuffmanDecodeImage(Image *,ExceptionInfo *),
+  HuffmanEncodeImage(const ImageInfo *,Image *,Image *,ExceptionInfo *),
+  LZWEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *),
+  PackbitsEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *),
+  ZLIBEncodeImage(Image *,const size_t,unsigned char *,ExceptionInfo *);
 
 extern MagickExport void
   Ascii85Encode(Image *,const unsigned char),
diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c
index e2d0e29..b0749ce 100644
--- a/MagickCore/constitute.c
+++ b/MagickCore/constitute.c
@@ -203,12 +203,9 @@
   image->columns=columns;
   image->rows=rows;
   (void) SetImageBackgroundColor(image);
-  status=ImportImagePixels(image,0,0,columns,rows,map,storage,pixels);
+  status=ImportImagePixels(image,0,0,columns,rows,map,storage,pixels,exception);
   if (status == MagickFalse)
-    {
-      InheritException(exception,&image->exception);
-      image=DestroyImage(image);
-    }
+     image=DestroyImage(image);
   return(image);
 }
 
@@ -694,21 +691,21 @@
     option=GetImageOption(read_info,"caption");
     if (option != (const char *) NULL)
       {
-        property=InterpretImageProperties(read_info,next,option);
+        property=InterpretImageProperties(read_info,next,option,exception);
         (void) SetImageProperty(next,"caption",property);
         property=DestroyString(property);
       }
     option=GetImageOption(read_info,"comment");
     if (option != (const char *) NULL)
       {
-        property=InterpretImageProperties(read_info,next,option);
+        property=InterpretImageProperties(read_info,next,option,exception);
         (void) SetImageProperty(next,"comment",property);
         property=DestroyString(property);
       }
     option=GetImageOption(read_info,"label");
     if (option != (const char *) NULL)
       {
-        property=InterpretImageProperties(read_info,next,option);
+        property=InterpretImageProperties(read_info,next,option,exception);
         (void) SetImageProperty(next,"label",property);
         property=DestroyString(property);
       }
diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c
index 2f47595..caa2cc7 100644
--- a/MagickCore/delegate.c
+++ b/MagickCore/delegate.c
@@ -287,7 +287,7 @@
         decode ? decode : encode);
       return((char *) NULL);
     }
-  command=InterpretImageProperties(image_info,image,commands[0]);
+  command=InterpretImageProperties(image_info,image,commands[0],exception);
   if (command == (char *) NULL)
     (void) ThrowMagickException(exception,GetMagickModule(),ResourceLimitError,
       "MemoryAllocationFailed","`%s'",commands[0]);
@@ -936,7 +936,7 @@
           return(MagickFalse);
         }
       magick=InterpretImageProperties(image_info,image,decode != (char *) NULL ?
-        delegate_info->encode : delegate_info->decode);
+        delegate_info->encode : delegate_info->decode,exception);
       if (magick == (char *) NULL)
         {
           (void) RelinquishUniqueFileResource(image_info->unique);
@@ -1029,7 +1029,7 @@
           }
       }
     status=MagickFalse;
-    command=InterpretImageProperties(image_info,image,commands[i]);
+    command=InterpretImageProperties(image_info,image,commands[i],exception);
     if (command != (char *) NULL)
       {
         /*
diff --git a/MagickCore/display.c b/MagickCore/display.c
index 84c09bb..536b064 100644
--- a/MagickCore/display.c
+++ b/MagickCore/display.c
@@ -7984,7 +7984,7 @@
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
       (void) SetImageType(*image,(*image)->matte == MagickFalse ?
-        GrayscaleType : GrayscaleMatteType);
+        GrayscaleType : GrayscaleMatteType,exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -8015,7 +8015,7 @@
       affinity_image=ReadImage(image_info,exception);
       if (affinity_image != (Image *) NULL)
         {
-          (void) RemapImage(&quantize_info,*image,affinity_image);
+          (void) RemapImage(&quantize_info,*image,affinity_image,exception);
           affinity_image=DestroyImage(affinity_image);
         }
       CatchException(exception);
@@ -8048,7 +8048,7 @@
       XCheckRefreshWindows(display,windows);
       quantize_info.number_colors=StringToUnsignedLong(colors);
       quantize_info.dither=status != 0 ? MagickTrue : MagickFalse;
-      (void) QuantizeImage(&quantize_info,*image);
+      (void) QuantizeImage(&quantize_info,*image,exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -8455,7 +8455,7 @@
       if ((flags & SigmaValue) == 0)
         geometry_info.sigma=1.0;
       (void) SegmentImage(*image,RGBColorspace,MagickFalse,geometry_info.rho,
-        geometry_info.sigma);
+        geometry_info.sigma,exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -13642,7 +13642,7 @@
       {
         (void) DeleteImageProperty(next_image,"label");
         (void) SetImageProperty(next_image,"label",InterpretImageProperties(
-          read_info,next_image,DefaultTileLabel));
+          read_info,next_image,DefaultTileLabel,exception));
         (void) ParseRegionGeometry(next_image,read_info->size,&geometry,
           exception);
         thumbnail_image=ThumbnailImage(next_image,geometry.width,
@@ -14652,7 +14652,7 @@
         *title;
 
       title=InterpretImageProperties(resource_info->image_info,display_image,
-        resource_info->title);
+        resource_info->title,exception);
       (void) CopyMagickString(windows->image.name,title,MaxTextExtent);
       (void) CopyMagickString(windows->image.icon_name,title,MaxTextExtent);
       title=DestroyString(title);
diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index cde1013..ee38ad6 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -1372,7 +1372,7 @@
 %  The format of the DrawClipPath method is:
 %
 %      MagickBooleanType DrawClipPath(Image *image,const DrawInfo *draw_info,
-%        const char *name)
+%        const char *name,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -1382,9 +1382,11 @@
 %
 %    o name: the name of the clip path.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType DrawClipPath(Image *image,
-  const DrawInfo *draw_info,const char *name)
+  const DrawInfo *draw_info,const char *name,ExceptionInfo *exception)
 {
   char
     clip_mask[MaxTextExtent];
@@ -1416,7 +1418,7 @@
         &image->exception);
       if (clip_mask == (Image *) NULL)
         return(MagickFalse);
-      (void) SetImageClipMask(image,clip_mask);
+      (void) SetImageClipMask(image,clip_mask,exception);
       clip_mask=DestroyImage(clip_mask);
     }
   (void) QueryColorDatabase("#00000000",&image->clip_mask->background_color,
@@ -1430,7 +1432,7 @@
   (void) CloneString(&clone_info->primitive,value);
   (void) QueryColorDatabase("#ffffff",&clone_info->fill,&image->exception);
   clone_info->clip_mask=(char *) NULL;
-  status=DrawImage(image->clip_mask,clone_info);
+  status=DrawImage(image->clip_mask,clone_info,exception);
   status|=NegateImage(image->clip_mask,MagickFalse,&image->exception);
   clone_info=DestroyDrawInfo(clone_info);
   if (image->debug != MagickFalse)
@@ -1628,7 +1630,8 @@
 %
 %  The format of the DrawImage method is:
 %
-%      MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info)
+%      MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -1636,6 +1639,8 @@
 %
 %    o draw_info: the draw info.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 static inline MagickBooleanType IsPoint(const char *point)
@@ -1657,7 +1662,8 @@
   primitive_info->point=point;
 }
 
-MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info)
+MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info,
+  ExceptionInfo *exception)
 {
 #define RenderImageTag  "Render/Image"
 
@@ -1871,7 +1877,7 @@
             GetMagickToken(q,&q,token);
             (void) CloneString(&graphic_context[n]->clip_mask,token);
             (void) DrawClipPath(image,graphic_context[n],
-              graphic_context[n]->clip_mask);
+              graphic_context[n]->clip_mask,exception);
             break;
           }
         if (LocaleCompare("clip-rule",keyword) == 0)
@@ -1976,7 +1982,7 @@
             (void) FormatLocaleString(pattern,MaxTextExtent,"%s",token);
             if (GetImageArtifact(image,pattern) != (const char *) NULL)
               (void) DrawPatternPath(image,draw_info,token,
-                &graphic_context[n]->fill_pattern);
+                &graphic_context[n]->fill_pattern,exception);
             else
               {
                 status=QueryColorDatabase(token,&graphic_context[n]->fill,
@@ -2259,7 +2265,7 @@
                 if (graphic_context[n]->clip_mask != (char *) NULL)
                   if (LocaleCompare(graphic_context[n]->clip_mask,
                       graphic_context[n-1]->clip_mask) != 0)
-                    (void) SetImageClipMask(image,(Image *) NULL);
+                    (void) SetImageClipMask(image,(Image *) NULL,exception);
                 graphic_context[n]=DestroyDrawInfo(graphic_context[n]);
                 n--;
                 break;
@@ -2505,7 +2511,7 @@
             (void) FormatLocaleString(pattern,MaxTextExtent,"%s",token);
             if (GetImageArtifact(image,pattern) != (const char *) NULL)
               (void) DrawPatternPath(image,draw_info,token,
-                &graphic_context[n]->stroke_pattern);
+                &graphic_context[n]->stroke_pattern,exception);
             else
               {
                 status=QueryColorDatabase(token,&graphic_context[n]->stroke,
@@ -3106,7 +3112,7 @@
             (LocaleCompare(graphic_context[n]->clip_mask,
              graphic_context[n-1]->clip_mask) != 0))
           (void) DrawClipPath(image,graphic_context[n],
-            graphic_context[n]->clip_mask);
+            graphic_context[n]->clip_mask,exception);
         (void) DrawPrimitive(image,graphic_context[n],primitive_info);
       }
     if (primitive_info->text != (char *) NULL)
@@ -3464,7 +3470,7 @@
 %  The format of the DrawPatternPath method is:
 %
 %      MagickBooleanType DrawPatternPath(Image *image,const DrawInfo *draw_info,
-%        const char *name,Image **pattern)
+%        const char *name,Image **pattern,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -3476,9 +3482,12 @@
 %
 %    o image: the image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType DrawPatternPath(Image *image,
-  const DrawInfo *draw_info,const char *name,Image **pattern)
+  const DrawInfo *draw_info,const char *name,Image **pattern,
+  ExceptionInfo *exception)
 {
   char
     property[MaxTextExtent];
@@ -3526,7 +3535,7 @@
   clone_info->fill_pattern=NewImageList();
   clone_info->stroke_pattern=NewImageList();
   (void) CloneString(&clone_info->primitive,path);
-  status=DrawImage(*pattern,clone_info);
+  status=DrawImage(*pattern,clone_info,exception);
   clone_info=DestroyDrawInfo(clone_info);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(DrawEvent,GetMagickModule(),"end pattern-path");
diff --git a/MagickCore/draw.h b/MagickCore/draw.h
index 66e80aa..164b10c 100644
--- a/MagickCore/draw.h
+++ b/MagickCore/draw.h
@@ -377,10 +377,11 @@
 
 extern MagickExport MagickBooleanType
   DrawAffineImage(Image *,const Image *,const AffineMatrix *),
-  DrawClipPath(Image *,const DrawInfo *,const char *),
+  DrawClipPath(Image *,const DrawInfo *,const char *,ExceptionInfo *),
   DrawGradientImage(Image *,const DrawInfo *),
-  DrawImage(Image *,const DrawInfo *),
-  DrawPatternPath(Image *,const DrawInfo *,const char *,Image **),
+  DrawImage(Image *,const DrawInfo *,ExceptionInfo *),
+  DrawPatternPath(Image *,const DrawInfo *,const char *,Image **,
+    ExceptionInfo *),
   DrawPrimitive(Image *,const DrawInfo *,const PrimitiveInfo *);
 
 extern MagickExport void
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index c45593a..6e35d15 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -2492,7 +2492,7 @@
         colors<<=1;
         quantize_info.number_colors=colors;
         quantize_info.colorspace=GRAYColorspace;
-        (void) QuantizeImage(&quantize_info,preview_image);
+        (void) QuantizeImage(&quantize_info,preview_image,exception);
         (void) FormatLocaleString(label,MaxTextExtent,
           "-colorspace gray -colors %.20g",(double) colors);
         break;
@@ -2504,7 +2504,7 @@
           break;
         colors<<=1;
         quantize_info.number_colors=colors;
-        (void) QuantizeImage(&quantize_info,preview_image);
+        (void) QuantizeImage(&quantize_info,preview_image,exception);
         (void) FormatLocaleString(label,MaxTextExtent,"colors %.20g",(double)
           colors);
         break;
@@ -2658,7 +2658,7 @@
           break;
         threshold+=0.4f;
         (void) SegmentImage(preview_image,RGBColorspace,MagickFalse,threshold,
-          threshold);
+          threshold,exception);
         (void) FormatLocaleString(label,MaxTextExtent,"segment %gx%g",
           threshold,threshold);
         break;
diff --git a/MagickCore/exception-private.h b/MagickCore/exception-private.h
index 8fef7e9..e1ce013 100644
--- a/MagickCore/exception-private.h
+++ b/MagickCore/exception-private.h
@@ -28,7 +28,7 @@
 #define ThrowBinaryException(severity,tag,context) \
 { \
   if (image != (Image *) NULL) \
-    (void) ThrowMagickException(&image->exception,GetMagickModule(),severity, \
+    (void) ThrowMagickException(exception,GetMagickModule(),severity, \
       tag == (const char *) NULL ? "unknown" : tag,"`%s'",context); \
   return(MagickFalse); \
 }
@@ -78,7 +78,7 @@
 }
 #define ThrowWriterException(severity,tag) \
 { \
-  (void) ThrowMagickException(&image->exception,GetMagickModule(),severity, \
+  (void) ThrowMagickException(exception,GetMagickModule(),severity, \
     tag == (const char *) NULL ? "unknown" : tag,"`%s'",image->filename); \
   if (image_info->adjoin != MagickFalse) \
     while (image->previous != (Image *) NULL) \
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index 045399c..da805a2 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -640,7 +640,7 @@
   clone_image=CloneImage(image,0,0,MagickTrue,exception);
   if (clone_image == (Image *) NULL)
     return((Image *) NULL);
-  (void) SetImageType(clone_image,GrayscaleType);
+  (void) SetImageType(clone_image,GrayscaleType,exception);
   edge_image=EdgeImage(clone_image,radius,exception);
   clone_image=DestroyImage(clone_image);
   if (edge_image == (Image *) NULL)
@@ -651,7 +651,7 @@
     return((Image *) NULL);
   (void) NormalizeImage(charcoal_image,exception);
   (void) NegateImage(charcoal_image,MagickFalse,exception);
-  (void) SetImageType(charcoal_image,GrayscaleType);
+  (void) SetImageType(charcoal_image,GrayscaleType,exception);
   return(charcoal_image);
 }
 
@@ -3845,7 +3845,7 @@
         return((Image *) NULL);
       annotate_info=CloneDrawInfo((const ImageInfo *) NULL,draw_info);
       caption=InterpretImageProperties((ImageInfo *) NULL,(Image *) image,
-        value);
+        value,exception);
       (void) CloneString(&annotate_info->text,caption);
       count=FormatMagickCaption(caption_image,annotate_info,MagickTrue,&metrics,
         &caption,exception);
@@ -5273,7 +5273,7 @@
     "ellipse %g,%g,%g,%g,0.0,360.0",image->columns/2.0,
     image->rows/2.0,image->columns/2.0-x,image->rows/2.0-y);
   draw_info->primitive=AcquireString(ellipse);
-  (void) DrawImage(oval_image,draw_info);
+  (void) DrawImage(oval_image,draw_info,exception);
   draw_info=DestroyDrawInfo(draw_info);
   blur_image=BlurImage(oval_image,radius,sigma,exception);
   oval_image=DestroyImage(oval_image);
diff --git a/MagickCore/histogram.c b/MagickCore/histogram.c
index 7a07c42..11b5303 100644
--- a/MagickCore/histogram.c
+++ b/MagickCore/histogram.c
@@ -1333,7 +1333,7 @@
       quantize_info->number_colors=MaxColormapSize;
       quantize_info->dither=MagickFalse;
       quantize_info->tree_depth=8;
-      (void) QuantizeImage(quantize_info,unique_image);
+      (void) QuantizeImage(quantize_info,unique_image,exception);
       quantize_info=DestroyQuantizeInfo(quantize_info);
     }
   cube_info=DestroyCubeInfo(image,cube_info);
diff --git a/MagickCore/identify.c b/MagickCore/identify.c
index 4bcbad7..782d048 100644
--- a/MagickCore/identify.c
+++ b/MagickCore/identify.c
@@ -365,7 +365,7 @@
   p=GetVirtualPixels(image,0,0,1,1,exception);
   ping=p == (const Quantum *) NULL ? MagickTrue : MagickFalse;
   type=GetImageType(image,exception);
-  (void) SignatureImage(image);
+  (void) SignatureImage(image,exception);
   (void) FormatLocaleFile(file,"Image: %s\n",image->filename);
   if (*image->magick_filename != '\0')
     if (LocaleCompare(image->magick_filename,image->filename) != 0)
@@ -796,7 +796,7 @@
           }
         (void) FormatLocaleFile(file," %.20gx%.20g %s\n",(double)
           tile->magick_columns,(double) tile->magick_rows,tile->magick);
-        (void) SignatureImage(tile);
+        (void) SignatureImage(tile,exception);
         ResetImagePropertyIterator(tile);
         property=GetNextImageProperty(tile);
         while (property != (const char *) NULL)
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 558f033..6f3adfb 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -636,7 +636,7 @@
 %  The format of the ClipImagePath method is:
 %
 %      MagickBooleanType ClipImagePath(Image *image,const char *pathname,
-%        const MagickBooleanType inside)
+%        const MagickBooleanType inside,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -648,15 +648,17 @@
 %    o inside: if non-zero, later operations take effect inside clipping path.
 %      Otherwise later operations take effect outside clipping path.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
-MagickExport MagickBooleanType ClipImage(Image *image)
+MagickExport MagickBooleanType ClipImage(Image *image,ExceptionInfo *exception)
 {
-  return(ClipImagePath(image,"#1",MagickTrue));
+  return(ClipImagePath(image,"#1",MagickTrue,exception));
 }
 
 MagickExport MagickBooleanType ClipImagePath(Image *image,const char *pathname,
-  const MagickBooleanType inside)
+  const MagickBooleanType inside,ExceptionInfo *exception)
 {
 #define ClipImagePathTag  "ClipPath/Image"
 
@@ -705,7 +707,7 @@
     (void) NegateImage(clip_mask,MagickFalse,&image->exception);
   (void) FormatLocaleString(clip_mask->magick_filename,MaxTextExtent,
     "8BIM:1999,2998:%s\nPS",pathname);
-  (void) SetImageClipMask(image,clip_mask);
+  (void) SetImageClipMask(image,clip_mask,exception);
   clip_mask=DestroyImage(clip_mask);
   return(MagickTrue);
 }
@@ -2902,7 +2904,8 @@
 %
 %  The format of the SetImageClipMask method is:
 %
-%      MagickBooleanType SetImageClipMask(Image *image,const Image *clip_mask)
+%      MagickBooleanType SetImageClipMask(Image *image,const Image *clip_mask,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2910,9 +2913,11 @@
 %
 %    o clip_mask: the image clip path.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType SetImageClipMask(Image *image,
-  const Image *clip_mask)
+  const Image *clip_mask,ExceptionInfo *exception)
 {
   assert(image != (Image *) NULL);
   if (image->debug != MagickFalse)
@@ -3401,7 +3406,8 @@
 %
 %  The format of the SetImageMask method is:
 %
-%      MagickBooleanType SetImageMask(Image *image,const Image *mask)
+%      MagickBooleanType SetImageMask(Image *image,const Image *mask,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -3409,9 +3415,11 @@
 %
 %    o mask: the image mask.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType SetImageMask(Image *image,
-  const Image *mask)
+  const Image *mask,ExceptionInfo *exception)
 {
   assert(image != (Image *) NULL);
   if (image->debug != MagickFalse)
@@ -3532,7 +3540,8 @@
 %
 %  The format of the SetImageType method is:
 %
-%      MagickBooleanType SetImageType(Image *image,const ImageType type)
+%      MagickBooleanType SetImageType(Image *image,const ImageType type,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -3540,15 +3549,15 @@
 %
 %    o type: Image type.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
-MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type)
+MagickExport MagickBooleanType SetImageType(Image *image,const ImageType type,
+  ExceptionInfo *exception)
 {
   const char
     *artifact;
 
-  ExceptionInfo
-    *exception;
-
   ImageInfo
     *image_info;
 
@@ -3568,7 +3577,6 @@
   artifact=GetImageArtifact(image,"dither");
   if (artifact != (const char *) NULL)
     (void) SetImageOption(image_info,"dither",artifact);
-  exception=(&image->exception);
   switch (type)
   {
     case BilevelType:
@@ -3580,7 +3588,7 @@
           quantize_info=AcquireQuantizeInfo(image_info);
           quantize_info->number_colors=2;
           quantize_info->colorspace=GRAYColorspace;
-          status=QuantizeImage(quantize_info,image);
+          status=QuantizeImage(quantize_info,image,exception);
           quantize_info=DestroyQuantizeInfo(quantize_info);
         }
       image->matte=MagickFalse;
@@ -3609,7 +3617,7 @@
         {
           quantize_info=AcquireQuantizeInfo(image_info);
           quantize_info->number_colors=256;
-          status=QuantizeImage(quantize_info,image);
+          status=QuantizeImage(quantize_info,image,exception);
           quantize_info=DestroyQuantizeInfo(quantize_info);
         }
       image->matte=MagickFalse;
@@ -3628,7 +3636,7 @@
       (void) BilevelImage(image,(double) QuantumRange/2.0);
       (void) SetPixelChannelMask(image,channel_mask);
       quantize_info=AcquireQuantizeInfo(image_info);
-      status=QuantizeImage(quantize_info,image);
+      status=QuantizeImage(quantize_info,image,exception);
       quantize_info=DestroyQuantizeInfo(quantize_info);
       break;
     }
@@ -3640,7 +3648,7 @@
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       quantize_info=AcquireQuantizeInfo(image_info);
       quantize_info->colorspace=TransparentColorspace;
-      status=QuantizeImage(quantize_info,image);
+      status=QuantizeImage(quantize_info,image,exception);
       quantize_info=DestroyQuantizeInfo(quantize_info);
       break;
     }
diff --git a/MagickCore/image.h b/MagickCore/image.h
index bade504..2e5ee7e 100644
--- a/MagickCore/image.h
+++ b/MagickCore/image.h
@@ -521,8 +521,8 @@
   *DestroyImageInfo(ImageInfo *);
 
 extern MagickExport MagickBooleanType
-  ClipImage(Image *),
-  ClipImagePath(Image *,const char *,const MagickBooleanType),
+  ClipImage(Image *,ExceptionInfo *),
+  ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
   GetImageAlphaChannel(const Image *),
   IsTaintImage(const Image *),
   IsMagickConflict(const char *),
@@ -534,14 +534,14 @@
   SeparateImage(Image *),
   SetImageAlphaChannel(Image *,const AlphaChannelType,ExceptionInfo *),
   SetImageBackgroundColor(Image *),
-  SetImageClipMask(Image *,const Image *),
+  SetImageClipMask(Image *,const Image *,ExceptionInfo *),
   SetImageColor(Image *,const PixelInfo *),
   SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
   SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
-  SetImageMask(Image *,const Image *),
+  SetImageMask(Image *,const Image *,ExceptionInfo *),
   SetImageOpacity(Image *,const Quantum),
   SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
-  SetImageType(Image *,const ImageType),
+  SetImageType(Image *,const ImageType,ExceptionInfo *),
   StripImage(Image *),
   SyncImage(Image *),
   SyncImageSettings(const ImageInfo *,Image *),
diff --git a/MagickCore/montage.c b/MagickCore/montage.c
index 62c4633..9ab2015 100644
--- a/MagickCore/montage.c
+++ b/MagickCore/montage.c
@@ -387,7 +387,6 @@
     geometry,
     extract_info;
 
-
   size_t
     bevel_width,
     border_width,
@@ -560,7 +559,8 @@
   /*
     Determine the number of lines in an next label.
   */
-  title=InterpretImageProperties(clone_info,image_list[0],montage_info->title);
+  title=InterpretImageProperties(clone_info,image_list[0],montage_info->title,
+    exception);
   title_offset=0;
   if (montage_info->title != (char *) NULL)
     title_offset=(size_t) (2*(metrics.ascent-metrics.descent)*
diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c
index 0e179bb..aecd19c 100644
--- a/MagickCore/pixel.c
+++ b/MagickCore/pixel.c
@@ -1797,7 +1797,7 @@
 %      MagickBooleanType ImportImagePixels(Image *image,const ssize_t x_offset,
 %        const ssize_t y_offset,const size_t columns,
 %        const size_t rows,const char *map,const StorageType type,
-%        const void *pixels)
+%        const void *pixels,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -1821,15 +1821,14 @@
 %      map and type.  You must preallocate this array where the expected
 %      length varies depending on the values of width, height, map, and type.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType ImportImagePixels(Image *image,
   const ssize_t x_offset,const ssize_t y_offset,const size_t columns,
   const size_t rows,const char *map,const StorageType type,
-  const void *pixels)
+  const void *pixels,ExceptionInfo *exception)
 {
-  ExceptionInfo
-    *exception;
-
   QuantumType
     *quantum_map;
 
@@ -1858,7 +1857,6 @@
   if (quantum_map == (QuantumType *) NULL)
     ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
       image->filename);
-  exception=(&image->exception);
   for (i=0; i < (ssize_t) length; i++)
   {
     switch (map[i])
diff --git a/MagickCore/pixel.h b/MagickCore/pixel.h
index 08ef29d..59715fc 100644
--- a/MagickCore/pixel.h
+++ b/MagickCore/pixel.h
@@ -147,7 +147,7 @@
   ExportImagePixels(const Image *,const ssize_t,const ssize_t,const size_t,
     const size_t,const char *,const StorageType,void *,ExceptionInfo *),
   ImportImagePixels(Image *,const ssize_t,const ssize_t,const size_t,
-    const size_t,const char *,const StorageType,const void *),
+    const size_t,const char *,const StorageType,const void *,ExceptionInfo *),
   InterpolatePixelChannel(const Image *,const CacheView_ *,
     const PixelChannel,const InterpolatePixelMethod,const double,const double,
     double *,ExceptionInfo *),
diff --git a/MagickCore/property.c b/MagickCore/property.c
index f157ecf..6340419 100644
--- a/MagickCore/property.c
+++ b/MagickCore/property.c
@@ -2523,7 +2523,7 @@
 %  The format of the InterpretImageProperties method is:
 %
 %      char *InterpretImageProperties(const ImageInfo *image_info,Image *image,
-%        const char *embed_text)
+%        const char *embed_text,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2534,9 +2534,11 @@
 %    o embed_text: the address of a character string containing the embedded
 %      formatting characters.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport char *InterpretImageProperties(const ImageInfo *image_info,
-  Image *image,const char *embed_text)
+  Image *image,const char *embed_text,ExceptionInfo *exception)
 {
   char
     filename[MaxTextExtent],
@@ -3108,7 +3110,7 @@
         /*
           Image bounding box.
         */
-        page=GetImageBoundingBox(image,&image->exception);
+        page=GetImageBoundingBox(image,exception);
         q+=FormatLocaleString(q,MaxTextExtent,"%.20gx%.20g%+.20g%+.20g",
           (double) page.width,(double) page.height,(double) page.x,(double)
           page.y);
@@ -3119,7 +3121,7 @@
         /*
           Image signature.
         */
-        (void) SignatureImage(image);
+        (void) SignatureImage(image,exception);
         value=GetImageProperty(image,"signature");
         if (value == (const char *) NULL)
           break;
diff --git a/MagickCore/property.h b/MagickCore/property.h
index a67af02..4b8af40 100644
--- a/MagickCore/property.h
+++ b/MagickCore/property.h
@@ -24,7 +24,8 @@
 
 extern MagickExport char
   *GetNextImageProperty(const Image *),
-  *InterpretImageProperties(const ImageInfo *,Image *,const char *),
+  *InterpretImageProperties(const ImageInfo *,Image *,const char *,
+    ExceptionInfo *),
   *RemoveImageProperty(Image *,const char *);
 
 extern MagickExport const char
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)
diff --git a/MagickCore/quantize.h b/MagickCore/quantize.h
index 61d6d29..445c40d 100644
--- a/MagickCore/quantize.h
+++ b/MagickCore/quantize.h
@@ -57,13 +57,13 @@
 } QuantizeInfo;
 
 extern MagickExport MagickBooleanType
-  CompressImageColormap(Image *),
+  CompressImageColormap(Image *,ExceptionInfo *),
   GetImageQuantizeError(Image *),
-  PosterizeImage(Image *,const size_t,const MagickBooleanType),
-  QuantizeImage(const QuantizeInfo *,Image *),
-  QuantizeImages(const QuantizeInfo *,Image *),
-  RemapImage(const QuantizeInfo *,Image *,const Image *),
-  RemapImages(const QuantizeInfo *,Image *,const Image *);
+  PosterizeImage(Image *,const size_t,const MagickBooleanType,ExceptionInfo *),
+  QuantizeImage(const QuantizeInfo *,Image *,ExceptionInfo *),
+  QuantizeImages(const QuantizeInfo *,Image *,ExceptionInfo *),
+  RemapImage(const QuantizeInfo *,Image *,const Image *,ExceptionInfo *),
+  RemapImages(const QuantizeInfo *,Image *,const Image *,ExceptionInfo *);
 
 extern MagickExport QuantizeInfo
   *AcquireQuantizeInfo(const ImageInfo *),
diff --git a/MagickCore/resize.c b/MagickCore/resize.c
index 83367a4..9f34a81 100644
--- a/MagickCore/resize.c
+++ b/MagickCore/resize.c
@@ -2604,8 +2604,11 @@
   */
   filter_image=DestroyImage(filter_image);
   resize_filter=DestroyResizeFilter(resize_filter);
-  if ((status == MagickFalse) || (resize_image == (Image *) NULL))
-    return((Image *) NULL);
+  if (status == MagickFalse)
+    {
+      resize_image=DestroyImage(resize_image);
+      return((Image *) NULL);
+    }
   resize_image->type=image->type;
   return(resize_image);
 }
diff --git a/MagickCore/segment.c b/MagickCore/segment.c
index 3d66c91..91a1055 100644
--- a/MagickCore/segment.c
+++ b/MagickCore/segment.c
@@ -218,7 +218,7 @@
 %      MagickBooleanType Classify(Image *image,short **extrema,
 %        const MagickRealType cluster_threshold,
 %        const MagickRealType weighting_exponent,
-%        const MagickBooleanType verbose)
+%        const MagickBooleanType verbose,ExceptionInfo *exception)
 %
 %  A description of each parameter follows.
 %
@@ -237,10 +237,13 @@
 %    o verbose:  A value greater than zero prints detailed information about
 %      the identified classes.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 static MagickBooleanType Classify(Image *image,short **extrema,
   const MagickRealType cluster_threshold,
-  const MagickRealType weighting_exponent,const MagickBooleanType verbose)
+  const MagickRealType weighting_exponent,const MagickBooleanType verbose,
+  ExceptionInfo *exception)
 {
 #define SegmentImageTag  "Segment/Image"
 
@@ -253,9 +256,6 @@
     *last_cluster,
     *next_cluster;
 
-  ExceptionInfo
-    *exception;
-
   ExtentPacket
     blue,
     green,
@@ -352,7 +352,6 @@
   status=MagickTrue;
   count=0;
   progress=0;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
   for (y=0; y < (ssize_t) image->rows; y++)
   {
@@ -512,7 +511,7 @@
   /*
     Allocate image colormap.
   */
-  if (AcquireImageColormap(image,number_clusters) == MagickFalse)
+  if (AcquireImageColormap(image,number_clusters,exception) == MagickFalse)
     ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
       image->filename);
   i=0;
@@ -1768,7 +1767,8 @@
 %
 %      MagickBooleanType SegmentImage(Image *image,
 %        const ColorspaceType colorspace,const MagickBooleanType verbose,
-%        const double cluster_threshold,const double smooth_threshold)
+%        const double cluster_threshold,const double smooth_threshold,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows.
 %
@@ -1787,10 +1787,13 @@
 %      derivative of the histogram.  As the value is increased, you can expect a
 %      smoother second derivative.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType SegmentImage(Image *image,
   const ColorspaceType colorspace,const MagickBooleanType verbose,
-  const double cluster_threshold,const double smooth_threshold)
+  const double cluster_threshold,const double smooth_threshold,
+  ExceptionInfo *exception)
 {
   MagickBooleanType
     status;
@@ -1841,7 +1844,8 @@
   /*
     Classify using the fuzzy c-Means technique.
   */
-  status=Classify(image,extrema,cluster_threshold,WeightingExponent,verbose);
+  status=Classify(image,extrema,cluster_threshold,WeightingExponent,verbose,
+    exception);
   if (IsRGBColorspace(colorspace) == MagickFalse)
     (void) TransformImageColorspace(image,colorspace);
   /*
diff --git a/MagickCore/segment.h b/MagickCore/segment.h
index 06314da..d9bb2c6 100644
--- a/MagickCore/segment.h
+++ b/MagickCore/segment.h
@@ -26,7 +26,7 @@
   GetImageDynamicThreshold(const Image *,const double,const double,
     PixelInfo *,ExceptionInfo *),
   SegmentImage(Image *,const ColorspaceType,const MagickBooleanType,
-    const double,const double);
+    const double,const double,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/MagickCore/signature-private.h b/MagickCore/signature-private.h
index 2171e17..d7001dd 100644
--- a/MagickCore/signature-private.h
+++ b/MagickCore/signature-private.h
@@ -30,7 +30,7 @@
   SignatureInfo;
 
 extern MagickExport MagickBooleanType
-  SignatureImage(Image *);
+  SignatureImage(Image *,ExceptionInfo *exception);
 
 extern MagickExport SignatureInfo
   *AcquireSignatureInfo(void),
diff --git a/MagickCore/signature.c b/MagickCore/signature.c
index 52345bb..8a0b2b8 100644
--- a/MagickCore/signature.c
+++ b/MagickCore/signature.c
@@ -458,14 +458,17 @@
 %
 %  The format of the SignatureImage method is:
 %
-%      MagickBooleanType SignatureImage(Image *image)
+%      MagickBooleanType SignatureImage(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 SignatureImage(Image *image)
+MagickExport MagickBooleanType SignatureImage(Image *image,
+  ExceptionInfo *exception)
 {
   CacheView
     *image_view;
@@ -473,9 +476,6 @@
   char
     *hex_signature;
 
-  ExceptionInfo
-    *exception;
-
   QuantumInfo
     *quantum_info;
 
@@ -523,7 +523,6 @@
   signature_info=AcquireSignatureInfo();
   signature=AcquireStringInfo(quantum_info->extent);
   pixels=GetQuantumPixels(quantum_info);
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
   for (y=0; y < (ssize_t) image->rows; y++)
   {
diff --git a/MagickCore/signature.h b/MagickCore/signature.h
index 6f59e38..976c463 100644
--- a/MagickCore/signature.h
+++ b/MagickCore/signature.h
@@ -23,7 +23,7 @@
 #endif
 
 extern MagickExport MagickBooleanType
-  SignatureImage(Image *);
+  SignatureImage(Image *,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c
index 4c73de7..69f9de5 100644
--- a/MagickCore/threshold.c
+++ b/MagickCore/threshold.c
@@ -1541,7 +1541,7 @@
   progress=0;
   if (image->sync != MagickFalse)
     {
-      if (AcquireImageColormap(image,2) == MagickFalse)
+      if (AcquireImageColormap(image,2,exception) == MagickFalse)
         ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
           image->filename);
       random_info=AcquireRandomInfoThreadSet();
diff --git a/MagickCore/xwindow.c b/MagickCore/xwindow.c
index 4304c16..395022c 100644
--- a/MagickCore/xwindow.c
+++ b/MagickCore/xwindow.c
@@ -4445,7 +4445,7 @@
             /*
               Create colormap.
             */
-            if (AcquireImageColormap(composite_image,number_colors) == MagickFalse)
+            if (AcquireImageColormap(composite_image,number_colors,exception) == MagickFalse)
               {
                 XDestroyImage(ximage);
                 composite_image=DestroyImage(composite_image);
@@ -7803,7 +7803,7 @@
                 }
                 (void) SyncAuthenticPixels(affinity_image,exception);
                 (void) RemapImage(resource_info->quantize_info,image,
-                  affinity_image);
+                  affinity_image,exception);
               }
             XGetPixelInfo(display,visual_info,map_info,resource_info,image,
               pixel);
@@ -7838,7 +7838,7 @@
         */
         quantize_info=(*resource_info->quantize_info);
         quantize_info.number_colors=(size_t) visual_info->colormap_size;
-        (void) QuantizeImage(&quantize_info,image);
+        (void) QuantizeImage(&quantize_info,image,exception);
       }
   /*
     Free previous and create new colormap.