diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp
index a05df94..203ec96 100644
--- a/Magick++/lib/Image.cpp
+++ b/Magick++/lib/Image.cpp
@@ -526,9 +526,12 @@
 {
   modifyImage();
   ChannelType channel_mask = SetPixelChannelMask( image(), channel_ );
-  SeparateImage ( image() );
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
+  SeparateImage ( image(), &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
   (void) SetPixelChannelMap( image(), channel_mask );
-  throwImageException();
 }
 
 // Set or obtain modulus channel depth
@@ -674,12 +677,15 @@
   // results in updating current image.
   modifyImage();
 
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
   CompositeImage( image(),
 		  compose_,
 		  compositeImage_.constImage(),
 		  xOffset_,
-                  yOffset_ );
-  throwImageException();
+                  yOffset_, &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 void Magick::Image::composite ( const Image &compositeImage_,
 				const Geometry &offset_,
@@ -696,11 +702,14 @@
 		      &x, &y,
 		      &width, &height );
 
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
   CompositeImage( image(),
 		  compose_,
 		  compositeImage_.constImage(),
-		  x, y );
-  throwImageException();
+		  x, y, &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 void Magick::Image::composite ( const Image &compositeImage_,
 				const GravityType gravity_,
@@ -713,11 +722,14 @@
   SetGeometry(compositeImage_.constImage(), &geometry);
   GravityAdjustGeometry(columns(), rows(), gravity_, &geometry);
 
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
   CompositeImage( image(),
 		  compose_,
 		  compositeImage_.constImage(),
-		  geometry.x, geometry.y );
-  throwImageException();
+		  geometry.x, geometry.y, &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 
 // Contrast image
@@ -1464,7 +1476,11 @@
 void Magick::Image::alpha ( const unsigned int alpha_ )
 {
   modifyImage();
-  SetImageAlpha( image(), alpha_ );
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
+  SetImageAlpha( image(), alpha_, &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 
 // Change the color of an opaque pixel to the pen color.
@@ -1599,7 +1615,8 @@
   EvaluateImage( crop_image, operator_, rvalue_, &exceptionInfo );
   (void) SetPixelChannelMap( image(), channel_mask );
   (void) CompositeImage( image(), image()->matte != MagickFalse ?
-    OverCompositeOp : CopyCompositeOp, crop_image, geometry.x, geometry.y );
+    OverCompositeOp : CopyCompositeOp, crop_image, geometry.x, geometry.y,
+    &exceptionInfo );
   crop_image = DestroyImageList(crop_image);
   throwException( exceptionInfo );
   (void) DestroyExceptionInfo( &exceptionInfo );
@@ -2107,34 +2124,46 @@
 void Magick::Image::texture ( const Image &texture_ )
 {
   modifyImage();
-  TextureImage( image(), texture_.constImage() );
-  throwImageException();
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
+  TextureImage( image(), texture_.constImage(), &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 
 // Threshold image
 void Magick::Image::threshold ( const double threshold_ )
 {
   modifyImage();
-  BilevelImage( image(), threshold_ );
-  throwImageException();
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
+  BilevelImage( image(), threshold_, &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 
 // Transform image based on image geometry only
 void Magick::Image::transform ( const Geometry &imageGeometry_ )
 {
   modifyImage();
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
   TransformImage ( &(image()), 0,
-		   std::string(imageGeometry_).c_str() );
-  throwImageException();
+		   std::string(imageGeometry_).c_str(), &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 // Transform image based on image and crop geometries
 void Magick::Image::transform ( const Geometry &imageGeometry_,
 				const Geometry &cropGeometry_ )
 {
   modifyImage();
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
   TransformImage ( &(image()), std::string(cropGeometry_).c_str(),
-		   std::string(imageGeometry_).c_str() );
-  throwImageException();
+		   std::string(imageGeometry_).c_str(), &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 
 // Add matte image to image, setting pixels matching color to transparent
@@ -3342,9 +3371,13 @@
   // matte channel, then create an opaque matte channel.  Likewise, if
   // the image already has a matte channel but a matte channel is not
   // desired, then set the matte channel to opaque.
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
   if ((matteFlag_ && !constImage()->matte) ||
       (constImage()->matte && !matteFlag_))
-    SetImageAlpha(image(),OpaqueAlpha);
+    SetImageAlpha(image(),OpaqueAlpha,&exceptionInfo);
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 
   image()->matte = (MagickBooleanType) matteFlag_;
 }
@@ -3779,8 +3812,11 @@
 void Magick::Image::strip ( void )
 {
   modifyImage();
-  StripImage( image() );
-  throwImageException();
+  ExceptionInfo exceptionInfo;
+  GetExceptionInfo( &exceptionInfo );
+  StripImage( image(), &exceptionInfo );
+  throwException( exceptionInfo );
+  (void) DestroyExceptionInfo( &exceptionInfo );
 }
 
 // enabled/disable stroke anti-aliasing
@@ -3898,7 +3934,7 @@
                     MagickTrue, // orphan
                     &exceptionInfo);
       throwException( exceptionInfo );
-  (void) DestroyExceptionInfo( &exceptionInfo );
+      (void) DestroyExceptionInfo( &exceptionInfo );
       texture.replaceImage( image );
     }
   return texture;
diff --git a/MagickCore/animate.c b/MagickCore/animate.c
index 8d0e59a..d5c2a97 100644
--- a/MagickCore/animate.c
+++ b/MagickCore/animate.c
@@ -1929,7 +1929,7 @@
     /*
       Create X image.
     */
-    (void) TransformImageColorspace(image_list[scene],RGBColorspace);
+    (void) TransformImageColorspace(image_list[scene],RGBColorspace,exception);
     windows->image.pixmap=(Pixmap) NULL;
     windows->image.matte_pixmap=(Pixmap) NULL;
     if ((resource_info->map_type != (char *) NULL) ||
diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c
index 2cc2968..ebc69f3 100644
--- a/MagickCore/annotate.c
+++ b/MagickCore/annotate.c
@@ -1748,7 +1748,7 @@
         resolution.y=resolution.x;
     }
   if (identity == MagickFalse)
-    (void) TransformImage(&annotate_image,"0x0",(char *) NULL);
+    (void) TransformImage(&annotate_image,"0x0",(char *) NULL,exception);
   else
     {
       RectangleInfo
@@ -1762,7 +1762,7 @@
       (void) FormatLocaleString(geometry,MaxTextExtent,
         "%.20gx%.20g%+.20g%+.20g",(double) crop_info.width,(double)
         crop_info.height,(double) crop_info.x,(double) crop_info.y);
-      (void) TransformImage(&annotate_image,geometry,(char *) NULL);
+      (void) TransformImage(&annotate_image,geometry,(char *) NULL,exception);
     }
   metrics->pixels_per_em.x=(resolution.y/DefaultResolution)*
     ExpandAffine(&draw_info->affine)*draw_info->pointsize;
@@ -1835,7 +1835,7 @@
       annotate_view=DestroyCacheView(annotate_view);
       (void) CompositeImage(image,OverCompositeOp,annotate_image,
         (ssize_t) ceil(offset->x-0.5),(ssize_t) ceil(offset->y-(metrics->ascent+
-        metrics->descent)-0.5));
+        metrics->descent)-0.5),exception);
     }
   annotate_image=DestroyImage(annotate_image);
   return(MagickTrue);
diff --git a/MagickCore/colorspace.c b/MagickCore/colorspace.c
index 9b477f6..ee31e69 100644
--- a/MagickCore/colorspace.c
+++ b/MagickCore/colorspace.c
@@ -226,7 +226,7 @@
       break;
     default:
     {
-      (void) TransformImageColorspace(image,image->colorspace);
+      (void) TransformImageColorspace(image,image->colorspace,exception);
       break;
     }
   }
@@ -1214,7 +1214,7 @@
 %  The format of the TransformImageColorspace method is:
 %
 %      MagickBooleanType TransformImageColorspace(Image *image,
-%        const ColorspaceType colorspace)
+%        const ColorspaceType colorspace,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -1222,9 +1222,11 @@
 %
 %    o colorspace: the colorspace.
 %
+%   o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType TransformImageColorspace(Image *image,
-  const ColorspaceType colorspace)
+  const ColorspaceType colorspace,ExceptionInfo *exception)
 {
   MagickBooleanType
     status;
@@ -1234,7 +1236,7 @@
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   if (colorspace == UndefinedColorspace)
-    return(SetImageColorspace(image,colorspace,&image->exception));
+    return(SetImageColorspace(image,colorspace,exception));
   if (image->colorspace == colorspace)
     return(MagickTrue);
   if ((colorspace == RGBColorspace) || (colorspace == TransparentColorspace))
diff --git a/MagickCore/colorspace.h b/MagickCore/colorspace.h
index 22cf4a0..fdc9981 100644
--- a/MagickCore/colorspace.h
+++ b/MagickCore/colorspace.h
@@ -52,7 +52,7 @@
 extern MagickExport MagickBooleanType
   RGBTransformImage(Image *,const ColorspaceType),
   SetImageColorspace(Image *,const ColorspaceType,ExceptionInfo *),
-  TransformImageColorspace(Image *,const ColorspaceType),
+  TransformImageColorspace(Image *,const ColorspaceType,ExceptionInfo *),
   TransformRGBImage(Image *,const ColorspaceType);
 
 #if defined(__cplusplus) || defined(c_plusplus)
diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index dc9f623..cea2647 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -265,7 +265,8 @@
   highlight_view=DestroyCacheView(highlight_view);
   reconstruct_view=DestroyCacheView(reconstruct_view);
   image_view=DestroyCacheView(image_view);
-  (void) CompositeImage(difference_image,image->compose,highlight_image,0,0);
+  (void) CompositeImage(difference_image,image->compose,highlight_image,0,0,
+    exception);
   highlight_image=DestroyImage(highlight_image);
   if (status == MagickFalse)
     difference_image=DestroyImage(difference_image);
diff --git a/MagickCore/composite.c b/MagickCore/composite.c
index b893c51..77f153f 100644
--- a/MagickCore/composite.c
+++ b/MagickCore/composite.c
@@ -93,7 +93,7 @@
 %
 %      MagickBooleanType CompositeImage(Image *image,
 %        const CompositeOperator compose,Image *composite_image,
-%        const ssize_t x_offset,const ssize_t y_offset)
+%        const ssize_t x_offset,const ssize_t y_offset,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -130,6 +130,8 @@
 %
 %        Previous to IM v6.5.3-3  this was called "modify-outside-overlay"
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 
 static inline double MagickMin(const double x,const double y)
@@ -1545,7 +1547,7 @@
 
 MagickExport MagickBooleanType CompositeImage(Image *image,
   const CompositeOperator compose,const Image *composite_image,
-  const ssize_t x_offset,const ssize_t y_offset)
+  const ssize_t x_offset,const ssize_t y_offset,ExceptionInfo *exception)
 {
 #define CompositeImageTag  "Composite/Image"
 
@@ -1559,9 +1561,6 @@
   double
     sans;
 
-  ExceptionInfo
-    *exception;
-
   GeometryInfo
     geometry_info;
 
@@ -1602,7 +1601,6 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   assert(composite_image != (Image *) NULL);
   assert(composite_image->signature == MagickSignature);
-  exception=(&image->exception);
   if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
   GetPixelInfo(image,&zero);
@@ -2738,7 +2736,8 @@
 %
 %  The format of the TextureImage method is:
 %
-%      MagickBooleanType TextureImage(Image *image,const Image *texture)
+%      MagickBooleanType TextureImage(Image *image,const Image *texture,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2747,7 +2746,8 @@
 %    o texture: This image is the texture to layer on the background.
 %
 */
-MagickExport MagickBooleanType TextureImage(Image *image,const Image *texture)
+MagickExport MagickBooleanType TextureImage(Image *image,const Image *texture,
+  ExceptionInfo *exception)
 {
 #define TextureImageTag  "Texture/Image"
 
@@ -2755,9 +2755,6 @@
     *image_view,
     *texture_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -2771,7 +2768,6 @@
   if (texture == (const Image *) NULL)
     return(MagickFalse);
   (void) SetImageVirtualPixelMethod(texture,TileVirtualPixelMethod);
-  exception=(&image->exception);
   if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
   status=MagickTrue;
@@ -2798,7 +2794,7 @@
             thread_status;
 
           thread_status=CompositeImage(image,image->compose,texture,x+
-            texture->tile_offset.x,y+texture->tile_offset.y);
+            texture->tile_offset.x,y+texture->tile_offset.y,exception);
           if (thread_status == MagickFalse)
             {
               status=thread_status;
diff --git a/MagickCore/composite.h b/MagickCore/composite.h
index 19dea37..a3ffabe 100644
--- a/MagickCore/composite.h
+++ b/MagickCore/composite.h
@@ -96,8 +96,8 @@
 
 extern MagickExport MagickBooleanType
   CompositeImage(Image *,const CompositeOperator,const Image *,const ssize_t,
-    const ssize_t),
-  TextureImage(Image *,const Image *);
+    const ssize_t,ExceptionInfo *),
+  TextureImage(Image *,const Image *,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/MagickCore/decorate.c b/MagickCore/decorate.c
index ea9d68d..03582b1 100644
--- a/MagickCore/decorate.c
+++ b/MagickCore/decorate.c
@@ -600,7 +600,7 @@
         frame_info->inner_bevel);
       y=(ssize_t) (frame_info->outer_bevel+(frame_info->y-bevel_width)+
         frame_info->inner_bevel);
-      (void) CompositeImage(frame_image,compose,image,x,y);
+      (void) CompositeImage(frame_image,compose,image,x,y,exception);
     }
   return(frame_image);
 }
diff --git a/MagickCore/display.c b/MagickCore/display.c
index fb71902..cca29f2 100644
--- a/MagickCore/display.c
+++ b/MagickCore/display.c
@@ -4358,7 +4358,7 @@
     Composite image with X Image window.
   */
   (void) CompositeImage(image,compose,composite_image,composite_info.x,
-    composite_info.y);
+    composite_info.y,exception);
   composite_image=DestroyImage(composite_image);
   XSetCursorState(display,windows,MagickFalse);
   /*
@@ -6483,10 +6483,11 @@
       windows->image.window_changes.height=(int) cache_image->rows;
       (void) FormatLocaleString(image_geometry,MaxTextExtent,"%dx%d!",
         windows->image.ximage->width,windows->image.ximage->height);
-      (void) TransformImage(image,windows->image.crop_geometry,image_geometry);
+      (void) TransformImage(image,windows->image.crop_geometry,image_geometry,
+        exception);
       if (windows->image.crop_geometry != (char *) NULL)
-        windows->image.crop_geometry=(char *)
-          RelinquishMagickMemory(windows->image.crop_geometry);
+        windows->image.crop_geometry=(char *) RelinquishMagickMemory(
+          windows->image.crop_geometry);
       windows->image.crop_geometry=cache_image->geometry;
       if (redo_image != (Image *) NULL)
         redo_image=DestroyImage(redo_image);
@@ -7446,10 +7447,11 @@
       */
       (void) FormatLocaleString(image_geometry,MaxTextExtent,"%dx%d!",
         windows->image.ximage->width,windows->image.ximage->height);
-      (void) TransformImage(image,windows->image.crop_geometry,image_geometry);
+      (void) TransformImage(image,windows->image.crop_geometry,image_geometry,
+        exception);
       if (windows->image.crop_geometry != (char *) NULL)
-        windows->image.crop_geometry=(char *)
-          RelinquishMagickMemory(windows->image.crop_geometry);
+        windows->image.crop_geometry=(char *) RelinquishMagickMemory(
+          windows->image.crop_geometry);
       windows->image.x=0;
       windows->image.y=0;
       XConfigureImageColormap(display,resource_info,windows,*image);
@@ -8306,7 +8308,7 @@
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
       threshold=SiPrefixToDouble(factor,QuantumRange);
-      (void) BilevelImage(*image,threshold);
+      (void) BilevelImage(*image,threshold,exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
         break;
@@ -10921,7 +10923,8 @@
   /*
     Paste image with X Image window.
   */
-  (void) CompositeImage(image,compose,paste_image,paste_info.x,paste_info.y);
+  (void) CompositeImage(image,compose,paste_image,paste_info.x,paste_info.y,
+    exception);
   paste_image=DestroyImage(paste_image);
   XSetCursorState(display,windows,MagickFalse);
   /*
@@ -11004,7 +11007,8 @@
     return(MagickFalse);
   (void) FormatLocaleString(geometry,MaxTextExtent,"%dx%d!",
     windows->image.ximage->width,windows->image.ximage->height);
-  (void) TransformImage(&print_image,windows->image.crop_geometry,geometry);
+  (void) TransformImage(&print_image,windows->image.crop_geometry,geometry,
+    exception);
   /*
     Print image.
   */
@@ -11654,7 +11658,7 @@
                 SaveToUndoBufferCommand,image,exception);
               windows->image.orphan=MagickFalse;
               (void) CompositeImage(*image,CopyCompositeOp,roi_image,
-                crop_info.x,crop_info.y);
+                crop_info.x,crop_info.y,exception);
               roi_image=DestroyImage(roi_image);
               (void) SetImageProgressMonitor(*image,progress_monitor,
                 (*image)->client_data);
@@ -12623,7 +12627,8 @@
     return(MagickFalse);
   (void) FormatLocaleString(geometry,MaxTextExtent,"%dx%d!",
     windows->image.ximage->width,windows->image.ximage->height);
-  (void) TransformImage(&save_image,windows->image.crop_geometry,geometry);
+  (void) TransformImage(&save_image,windows->image.crop_geometry,geometry,
+    exception);
   /*
     Write image.
   */
diff --git a/MagickCore/distort.c b/MagickCore/distort.c
index 6ab3fa9..5aa50d4 100644
--- a/MagickCore/distort.c
+++ b/MagickCore/distort.c
@@ -1474,7 +1474,7 @@
         distort alpha channel separately
       */
       channel_mask=SetPixelChannelMask(tmp_image,AlphaChannel);
-      (void) SeparateImage(tmp_image);
+      (void) SeparateImage(tmp_image,exception);
       SetPixelChannelMap(tmp_image,channel_mask);
       (void) SetImageAlphaChannel(tmp_image,OpaqueAlphaChannel,exception);
       resize_alpha=DistortImage(tmp_image,AffineDistortion,12,distort_args,
@@ -1498,10 +1498,12 @@
           return((Image *) NULL);
         }
       /* replace resize images alpha with the separally distorted alpha */
-      (void) SetImageAlphaChannel(resize_image,DeactivateAlphaChannel,exception);
-      (void) SetImageAlphaChannel(resize_alpha,DeactivateAlphaChannel,exception);
+      (void) SetImageAlphaChannel(resize_image,DeactivateAlphaChannel,
+        exception);
+      (void) SetImageAlphaChannel(resize_alpha,DeactivateAlphaChannel,
+        exception);
       (void) CompositeImage(resize_image,CopyOpacityCompositeOp,resize_alpha,
-        0,0);
+        0,0,exception);
       resize_alpha=DestroyImage(resize_alpha);
     }
   (void) SetImageVirtualPixelMethod(resize_image,vp_save);
diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index 2b234b2..bf00969 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -4481,13 +4481,14 @@
           (void) FormatLocaleString(geometry,MaxTextExtent,"%gx%g!",
             primitive_info[1].point.x,primitive_info[1].point.y);
           composite_image->filter=image->filter;
-          (void) TransformImage(&composite_image,(char *) NULL,geometry);
+          (void) TransformImage(&composite_image,(char *) NULL,geometry,
+            exception);
         }
       if (composite_image->matte == MagickFalse)
         (void) SetImageAlphaChannel(composite_image,OpaqueAlphaChannel,
           exception);
       if (draw_info->alpha != OpaqueAlpha)
-        (void) SetImageAlpha(composite_image,draw_info->alpha);
+        (void) SetImageAlpha(composite_image,draw_info->alpha,exception);
       SetGeometry(image,&geometry);
       image->gravity=draw_info->gravity;
       geometry.x=x;
@@ -4505,7 +4506,7 @@
         (void) DrawAffineImage(image,composite_image,&affine);
       else
         (void) CompositeImage(image,draw_info->compose,composite_image,
-          geometry.x,geometry.y);
+          geometry.x,geometry.y,exception);
       composite_image=DestroyImage(composite_image);
       break;
     }
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index b7757a6..26492ee 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -2615,8 +2615,8 @@
         preview_image=CloneImage(thumbnail,0,0,MagickTrue,exception);
         if (preview_image == (Image *) NULL)
           break;
-        (void) BilevelImage(thumbnail,
-          (double) (percentage*((MagickRealType) QuantumRange+1.0))/100.0);
+        (void) BilevelImage(thumbnail,(double) (percentage*((MagickRealType)
+          QuantumRange+1.0))/100.0,exception);
         (void) FormatLocaleString(label,MaxTextExtent,"threshold %g",
           (double) (percentage*((MagickRealType) QuantumRange+1.0))/100.0);
         break;
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index fada341..1752666 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -3980,11 +3980,12 @@
     }
   picture_image->background_color=image->border_color;
   (void) SetImageBackgroundColor(picture_image);
-  (void) CompositeImage(picture_image,OverCompositeOp,image,quantum,quantum);
+  (void) CompositeImage(picture_image,OverCompositeOp,image,quantum,quantum,
+    exception);
   if (caption_image != (Image *) NULL)
     {
       (void) CompositeImage(picture_image,OverCompositeOp,caption_image,
-        quantum,(ssize_t) (image->rows+3*quantum/2));
+        quantum,(ssize_t) (image->rows+3*quantum/2),exception);
       caption_image=DestroyImage(caption_image);
     }
   (void) QueryColorCompliance("none",AllCompliance,
@@ -4024,7 +4025,7 @@
     }
   polaroid_image=flop_image;
   (void) CompositeImage(polaroid_image,OverCompositeOp,picture_image,
-    (ssize_t) (-0.01*picture_image->columns/2.0),0L);
+    (ssize_t) (-0.01*picture_image->columns/2.0),0L,exception);
   picture_image=DestroyImage(picture_image);
   (void) QueryColorCompliance("none",AllCompliance,
     &polaroid_image->background_color,exception);
@@ -4419,14 +4420,15 @@
     return((Image *) NULL);
   (void) NormalizeImage(dodge_image,exception);
   (void) NegateImage(dodge_image,MagickFalse,exception);
-  (void) TransformImage(&dodge_image,(char *) NULL,"50%");
+  (void) TransformImage(&dodge_image,(char *) NULL,"50%",exception);
   sketch_image=CloneImage(image,0,0,MagickTrue,exception);
   if (sketch_image == (Image *) NULL)
     {
       dodge_image=DestroyImage(dodge_image);
       return((Image *) NULL);
     }
-  (void) CompositeImage(sketch_image,ColorDodgeCompositeOp,dodge_image,0,0);
+  (void) CompositeImage(sketch_image,ColorDodgeCompositeOp,dodge_image,0,0,
+    exception);
   dodge_image=DestroyImage(dodge_image);
   blend_image=CloneImage(image,0,0,MagickTrue,exception);
   if (blend_image == (Image *) NULL)
@@ -4435,7 +4437,8 @@
       return((Image *) NULL);
     }
   (void) SetImageArtifact(blend_image,"compose:args","20x80");
-  (void) CompositeImage(sketch_image,BlendCompositeOp,blend_image,0,0);
+  (void) CompositeImage(sketch_image,BlendCompositeOp,blend_image,0,0,
+    exception);
   blend_image=DestroyImage(blend_image);
   return(sketch_image);
 }
@@ -5383,7 +5386,8 @@
       return((Image *) NULL);
     }
   blur_image->matte=MagickFalse;
-  (void) CompositeImage(canvas_image,CopyOpacityCompositeOp,blur_image,0,0);
+  (void) CompositeImage(canvas_image,CopyOpacityCompositeOp,blur_image,0,0,
+    exception);
   blur_image=DestroyImage(blur_image);
   vignette_image=MergeImageLayers(canvas_image,FlattenLayer,exception);
   canvas_image=DestroyImage(canvas_image);
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 476668e..bf79a47 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -2256,23 +2256,23 @@
 %
 %  The format of the SeparateImage method is:
 %
-%      MagickBooleanType SeparateImage(Image *image)
+%      MagickBooleanType SeparateImage(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 SeparateImage(Image *image)
+MagickExport MagickBooleanType SeparateImage(Image *image,
+  ExceptionInfo *exception)
 {
 #define SeparateImageTag  "Separate/Image"
 
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -2286,7 +2286,6 @@
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  exception=(&image->exception);
   if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
   /*
@@ -2414,7 +2413,7 @@
           {
             channel_mask=SetPixelChannelMask(separate_image,
               (ChannelType) (1 << i));
-            (void) SeparateImage(separate_image);
+            (void) SeparateImage(separate_image,exception);
             (void) SetPixelChannelMap(separate_image,channel_mask);
             AppendImageToList(&images,separate_image);
           }
@@ -2547,7 +2546,7 @@
         the alpha channel.
       */
       channel_mask=SetPixelChannelMask(image,GrayChannel);
-      status=SeparateImage(image);
+      status=SeparateImage(image,exception);
       (void) SetPixelChannelMask(image,channel_mask);
       image->matte=MagickTrue; /* make sure transparency is now on! */
       if (alpha_type == ShapeAlphaChannel)
@@ -2568,20 +2567,20 @@
     case ExtractAlphaChannel:
     {
       channel_mask=SetPixelChannelMask(image,AlphaChannel);
-      status=SeparateImage(image);
+      status=SeparateImage(image,exception);
       (void) SetPixelChannelMask(image,channel_mask);
       image->matte=MagickFalse;
       break;
     }
     case OpaqueAlphaChannel:
     {
-      status=SetImageAlpha(image,OpaqueAlpha);
+      status=SetImageAlpha(image,OpaqueAlpha,exception);
       image->matte=MagickTrue;
       break;
     }
     case TransparentAlphaChannel:
     {
-      status=SetImageAlpha(image,TransparentAlpha);
+      status=SetImageAlpha(image,TransparentAlpha,exception);
       image->matte=MagickTrue;
       break;
     }
@@ -2589,7 +2588,7 @@
     {
       if (image->matte == MagickFalse)
         {
-          status=SetImageAlpha(image,OpaqueAlpha);
+          status=SetImageAlpha(image,OpaqueAlpha,exception);
           image->matte=MagickTrue;
         }
       break;
@@ -2709,7 +2708,8 @@
 %
 %  The format of the SetImageColor method is:
 %
-%      MagickBooleanType SetImageColor(Image *image,const PixelInfo *color)
+%      MagickBooleanType SetImageColor(Image *image,const PixelInfo *color,
+%        ExeptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2717,16 +2717,15 @@
 %
 %    o background: the image color.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType SetImageColor(Image *image,
-  const PixelInfo *color)
+  const PixelInfo *color,ExceptionInfo *exception)
 {
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -2743,7 +2742,6 @@
   image->fuzz=color->fuzz;
   image->depth=color->depth;
   status=MagickTrue;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   #pragma omp parallel for schedule(dynamic,4) shared(status)
@@ -3377,11 +3375,12 @@
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  SetImageAlphs() sets the alpha levels of the image.
+%  SetImageAlpha() sets the alpha levels of the image.
 %
 %  The format of the SetImageAlpha method is:
 %
-%      MagickBooleanType SetImageAlpha(Image *image,const Quantum alpha)
+%      MagickBooleanType SetImageAlpha(Image *image,const Quantum alpha,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -3391,14 +3390,12 @@
 %      fully transparent.
 %
 */
-MagickExport MagickBooleanType SetImageAlpha(Image *image,const Quantum alpha)
+MagickExport MagickBooleanType SetImageAlpha(Image *image,const Quantum alpha,
+  ExceptionInfo *exception)
 {
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -3411,7 +3408,6 @@
   assert(image->signature == MagickSignature);
   image->matte=alpha != OpaqueAlpha ? MagickTrue : MagickFalse;
   status=MagickTrue;
-  exception=(&image->exception);
   image_view=AcquireCacheView(image);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   #pragma omp parallel for schedule(dynamic,4) shared(status)
@@ -3506,7 +3502,7 @@
     case BilevelType:
     {
       if (IsImageGray(image,&image->exception) == MagickFalse)
-        status=TransformImageColorspace(image,GRAYColorspace);
+        status=TransformImageColorspace(image,GRAYColorspace,exception);
       if (IsImageMonochrome(image,&image->exception) == MagickFalse)
         {
           quantize_info=AcquireQuantizeInfo(image_info);
@@ -3521,14 +3517,14 @@
     case GrayscaleType:
     {
       if (IsImageGray(image,&image->exception) == MagickFalse)
-        status=TransformImageColorspace(image,GRAYColorspace);
+        status=TransformImageColorspace(image,GRAYColorspace,exception);
       image->matte=MagickFalse;
       break;
     }
     case GrayscaleMatteType:
     {
       if (IsImageGray(image,&image->exception) == MagickFalse)
-        status=TransformImageColorspace(image,GRAYColorspace);
+        status=TransformImageColorspace(image,GRAYColorspace,exception);
       if (image->matte == MagickFalse)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       break;
@@ -3536,7 +3532,7 @@
     case PaletteType:
     {
       if (IsRGBColorspace(image->colorspace) == MagickFalse)
-        status=TransformImageColorspace(image,RGBColorspace);
+        status=TransformImageColorspace(image,RGBColorspace,exception);
       if ((image->storage_class == DirectClass) || (image->colors > 256))
         {
           quantize_info=AcquireQuantizeInfo(image_info);
@@ -3553,11 +3549,11 @@
         channel_mask;
 
       if (IsRGBColorspace(image->colorspace) == MagickFalse)
-        status=TransformImageColorspace(image,RGBColorspace);
+        status=TransformImageColorspace(image,RGBColorspace,exception);
       if (image->matte == MagickFalse)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       channel_mask=SetPixelChannelMask(image,AlphaChannel);
-      (void) BilevelImage(image,(double) QuantumRange/2.0);
+      (void) BilevelImage(image,(double) QuantumRange/2.0,exception);
       (void) SetPixelChannelMask(image,channel_mask);
       quantize_info=AcquireQuantizeInfo(image_info);
       status=QuantizeImage(quantize_info,image,exception);
@@ -3567,7 +3563,7 @@
     case PaletteMatteType:
     {
       if (IsRGBColorspace(image->colorspace) == MagickFalse)
-        status=TransformImageColorspace(image,RGBColorspace);
+        status=TransformImageColorspace(image,RGBColorspace,exception);
       if (image->matte == MagickFalse)
         (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
       quantize_info=AcquireQuantizeInfo(image_info);
@@ -3579,7 +3575,7 @@
     case TrueColorType:
     {
       if (IsRGBColorspace(image->colorspace) == MagickFalse)
-        status=TransformImageColorspace(image,RGBColorspace);
+        status=TransformImageColorspace(image,RGBColorspace,exception);
       if (image->storage_class != DirectClass)
         status=SetImageStorageClass(image,DirectClass,&image->exception);
       image->matte=MagickFalse;
@@ -3588,7 +3584,7 @@
     case TrueColorMatteType:
     {
       if (IsRGBColorspace(image->colorspace) == MagickFalse)
-        status=TransformImageColorspace(image,RGBColorspace);
+        status=TransformImageColorspace(image,RGBColorspace,exception);
       if (image->storage_class != DirectClass)
         status=SetImageStorageClass(image,DirectClass,&image->exception);
       if (image->matte == MagickFalse)
@@ -3600,8 +3596,8 @@
       if (image->colorspace != CMYKColorspace)
         {
           if (IsRGBColorspace(image->colorspace) == MagickFalse)
-            status=TransformImageColorspace(image,RGBColorspace);
-          status=TransformImageColorspace(image,CMYKColorspace);
+            status=TransformImageColorspace(image,RGBColorspace,exception);
+          status=TransformImageColorspace(image,CMYKColorspace,exception);
         }
       if (image->storage_class != DirectClass)
         status=SetImageStorageClass(image,DirectClass,&image->exception);
@@ -3613,8 +3609,8 @@
       if (image->colorspace != CMYKColorspace)
         {
           if (IsRGBColorspace(image->colorspace) == MagickFalse)
-            status=TransformImageColorspace(image,RGBColorspace);
-          status=TransformImageColorspace(image,CMYKColorspace);
+            status=TransformImageColorspace(image,RGBColorspace,exception);
+          status=TransformImageColorspace(image,CMYKColorspace,exception);
         }
       if (image->storage_class != DirectClass)
         status=SetImageStorageClass(image,DirectClass,&image->exception);
@@ -3948,7 +3944,8 @@
         x_offset-=SmushXGap(smush_image,image,offset,exception);
         y_offset-=geometry.y;
       }
-    status=CompositeImage(smush_image,OverCompositeOp,image,x_offset,y_offset);
+    status=CompositeImage(smush_image,OverCompositeOp,image,x_offset,y_offset,
+      exception);
     proceed=SetImageProgress(image,SmushImageTag,n,number_images);
     if (proceed == MagickFalse)
       break;
@@ -3989,24 +3986,30 @@
 %
 %  The format of the StripImage method is:
 %
-%      MagickBooleanType StripImage(Image *image)
+%      MagickBooleanType StripImage(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 StripImage(Image *image)
+MagickExport MagickBooleanType StripImage(Image *image,ExceptionInfo *exception)
 {
+  MagickBooleanType
+    status;
+
   assert(image != (Image *) NULL);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
+  (void) exception;
   DestroyImageProfiles(image);
   (void) DeleteImageProperty(image,"comment");
   (void) DeleteImageProperty(image,"date:create");
   (void) DeleteImageProperty(image,"date:modify");
-  (void) SetImageArtifact(image,"png:include-chunk","none,trns,gama");
-  return(MagickTrue);
+  status=SetImageArtifact(image,"png:include-chunk","none,trns,gama");
+  return(status);
 }
 
 /*
diff --git a/MagickCore/image.h b/MagickCore/image.h
index 3cdc1a8..86e04bd 100644
--- a/MagickCore/image.h
+++ b/MagickCore/image.h
@@ -525,18 +525,18 @@
   ListMagickInfo(FILE *,ExceptionInfo *),
   ModifyImage(Image **,ExceptionInfo *),
   ResetImagePage(Image *,const char *),
-  SeparateImage(Image *),
-  SetImageAlpha(Image *,const Quantum),
+  SeparateImage(Image *,ExceptionInfo *),
+  SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
   SetImageAlphaChannel(Image *,const AlphaChannelType,ExceptionInfo *),
   SetImageBackgroundColor(Image *),
   SetImageClipMask(Image *,const Image *,ExceptionInfo *),
-  SetImageColor(Image *,const PixelInfo *),
+  SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
   SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
   SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
   SetImageMask(Image *,const Image *,ExceptionInfo *),
   SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
   SetImageType(Image *,const ImageType,ExceptionInfo *),
-  StripImage(Image *),
+  StripImage(Image *,ExceptionInfo *),
   SyncImage(Image *),
   SyncImageSettings(const ImageInfo *,Image *),
   SyncImagesSettings(ImageInfo *,Image *);
diff --git a/MagickCore/layer.c b/MagickCore/layer.c
index a9c9a78..92ab7a0 100644
--- a/MagickCore/layer.c
+++ b/MagickCore/layer.c
@@ -280,7 +280,7 @@
   */
   dispose_image=CloneImage(coalesce_image,0,0,MagickTrue,exception);
   (void) CompositeImage(coalesce_image,CopyCompositeOp,next,next->page.x,
-    next->page.y);
+    next->page.y,exception);
   next=GetNextImageInList(next);
   for ( ; next != (Image *) NULL; next=GetNextImageInList(next))
   {
@@ -332,7 +332,8 @@
     coalesce_image=GetNextImageInList(coalesce_image);
     coalesce_image->matte=MagickTrue;
     (void) CompositeImage(coalesce_image,next->matte != MagickFalse ?
-      OverCompositeOp : CopyCompositeOp,next,next->page.x,next->page.y);
+      OverCompositeOp : CopyCompositeOp,next,next->page.x,next->page.y,
+      exception);
     (void) CloneImageProfiles(coalesce_image,next);
     (void) CloneImageProperties(coalesce_image,next);
     (void) CloneImageArtifacts(coalesce_image,next);
@@ -425,7 +426,8 @@
         return((Image *) NULL);
       }
     (void) CompositeImage(current_image,curr->matte != MagickFalse ?
-      OverCompositeOp : CopyCompositeOp,curr,curr->page.x,curr->page.y);
+      OverCompositeOp : CopyCompositeOp,curr,curr->page.x,curr->page.y,
+      exception);
 
     /*
       Handle Background dispose: image is displayed for the delay period.
@@ -796,7 +798,8 @@
   image_a->page=next->page;
   image_a->page.x=0;
   image_a->page.y=0;
-  (void) CompositeImage(image_a,CopyCompositeOp,next,next->page.x,next->page.y);
+  (void) CompositeImage(image_a,CopyCompositeOp,next,next->page.x,next->page.y,
+    exception);
   /*
     Compute the bounding box of changes for the later images
   */
@@ -812,7 +815,7 @@
         return((Image *) NULL);
       }
     (void) CompositeImage(image_a,CopyCompositeOp,next,next->page.x,
-                           next->page.y);
+      next->page.y,exception);
     bounds[i]=CompareImagesBounds(image_b,image_a,method,exception);
 
     image_b=DestroyImage(image_b);
@@ -1500,7 +1503,8 @@
         return;
       }
     (void) CompositeImage(current_image,next->matte != MagickFalse ?
-      OverCompositeOp : CopyCompositeOp, next,next->page.x,next->page.y);
+      OverCompositeOp : CopyCompositeOp, next,next->page.x,next->page.y,
+      exception);
     /*
       At this point the image would be displayed, for the delay period
     **
@@ -1543,7 +1547,7 @@
     next=GetNextImageInList(next);
     if ( next != (Image *) NULL ) {
       (void) CompositeImage(next, ChangeMaskCompositeOp,
-          dispose_image, -(next->page.x), -(next->page.y) );
+        dispose_image, -(next->page.x), -(next->page.y), exception );
     }
   }
   dispose_image=DestroyImage(dispose_image);
@@ -1747,13 +1751,15 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
+
 static inline void CompositeCanvas(Image *destination,
-  const CompositeOperator compose, Image *source,ssize_t x_offset,
-  ssize_t y_offset )
+  const CompositeOperator compose,Image *source,ssize_t x_offset,
+  ssize_t y_offset,ExceptionInfo *exception)
 {
   x_offset+=source->page.x-destination->page.x;
   y_offset+=source->page.y-destination->page.y;
-  (void) CompositeImage(destination,compose,source,x_offset,y_offset);
+  (void) CompositeImage(destination,compose,source,x_offset,y_offset,
+    exception);
 }
 
 MagickExport void CompositeLayers(Image *destination,
@@ -1768,7 +1774,7 @@
   assert(exception->signature == MagickSignature);
   if (source->debug != MagickFalse || destination->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s - %s",
-         source->filename, destination->filename);
+      source->filename, destination->filename);
 
   /*
     Overlay single source image over destation image/list
@@ -1776,7 +1782,8 @@
   if ( source->previous == (Image *) NULL && source->next == (Image *) NULL )
     while ( destination != (Image *) NULL )
     {
-      CompositeCanvas(destination, compose, source, x_offset, y_offset);
+      CompositeCanvas(destination, compose, source, x_offset, y_offset,
+        exception);
       destination=GetNextImageInList(destination);
     }
 
@@ -1792,7 +1799,8 @@
   {
     Image *dest = CloneImage(destination,0,0,MagickTrue,exception);
 
-    CompositeCanvas(destination, compose, source, x_offset, y_offset);
+    CompositeCanvas(destination, compose, source, x_offset, y_offset,
+      exception);
     /* copy source image attributes ? */
     if ( source->next != (Image *) NULL )
       {
@@ -1807,7 +1815,8 @@
            CloneImage(dest,0,0,MagickTrue,exception));
       destination=GetLastImageInList(destination);
 
-      CompositeCanvas(destination, compose, source, x_offset, y_offset);
+      CompositeCanvas(destination, compose, source, x_offset, y_offset,
+        exception);
       destination->delay = source->delay;
       destination->iterations = source->iterations;
       source=GetNextImageInList(source);
@@ -1822,7 +1831,8 @@
   else
     while ( source != (Image *) NULL && destination != (Image *) NULL )
     {
-      CompositeCanvas(destination, compose, source, x_offset, y_offset);
+      CompositeCanvas(destination, compose, source, x_offset, y_offset,
+        exception);
       source=GetNextImageInList(source);
       destination=GetNextImageInList(destination);
     }
@@ -1881,8 +1891,8 @@
 %    o exception: return any errors or warnings in this structure.
 %
 */
-MagickExport Image *MergeImageLayers(Image *image,
-  const ImageLayerMethod method,ExceptionInfo *exception)
+MagickExport Image *MergeImageLayers(Image *image,const ImageLayerMethod method,
+  ExceptionInfo *exception)
 {
 #define MergeLayersTag  "Merge/Layers"
 
@@ -2017,7 +2027,7 @@
   for (scene=0; scene < (ssize_t) number_images; scene++)
   {
     (void) CompositeImage(canvas,image->compose,image,image->page.x-
-      canvas->page.x,image->page.y-canvas->page.y);
+      canvas->page.x,image->page.y-canvas->page.y,exception);
     proceed=SetImageProgress(image,MergeLayersTag,(MagickOffsetType) scene,
       number_images);
     if (proceed == MagickFalse)
diff --git a/MagickCore/montage.c b/MagickCore/montage.c
index 044b5e2..f695ea2 100644
--- a/MagickCore/montage.c
+++ b/MagickCore/montage.c
@@ -679,7 +679,7 @@
     progress_monitor=SetImageProgressMonitor(montage,(MagickProgressMonitor)
       NULL,montage->client_data);
     if (texture != (Image *) NULL)
-      (void) TextureImage(montage,texture);
+      (void) TextureImage(montage,texture,exception);
     if (montage_info->title != (char *) NULL)
       {
         char
@@ -822,13 +822,14 @@
               shadow_image=ShadowImage(image,80.0,2.0,5,5,exception);
               if (shadow_image != (Image *) NULL)
                 {
-                  (void) CompositeImage(shadow_image,OverCompositeOp,image,0,0);
+                  (void) CompositeImage(shadow_image,OverCompositeOp,image,0,0,
+                    exception);
                   image=DestroyImage(image);
                   image=shadow_image;
                 }
           }
           (void) CompositeImage(montage,image->compose,image,x_offset+x,
-            y_offset+y);
+            y_offset+y,exception);
           value=GetImageProperty(image,"label",exception);
           if (value != (const char *) NULL)
             {
diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c
index 414c6c2..6eeb389 100644
--- a/MagickCore/morphology.c
+++ b/MagickCore/morphology.c
@@ -3864,7 +3864,8 @@
         /* Preserve the alpha channel of input image - but turned off */
         (void) SetImageAlphaChannel(rslt_image, DeactivateAlphaChannel,
           exception);
-        (void) CompositeImage(rslt_image, CopyOpacityCompositeOp, image, 0, 0);
+        (void) CompositeImage(rslt_image, CopyOpacityCompositeOp, image, 0, 0,
+          exception);
         (void) SetImageAlphaChannel(rslt_image, DeactivateAlphaChannel,
           exception);
       }
@@ -4087,18 +4088,21 @@
         case TopHatMorphology:
         case BottomHatMorphology:
           if ( verbose == MagickTrue )
-            (void) FormatLocaleFile(stderr, "\n%s: Difference with original image",
-                 CommandOptionToMnemonic(MagickMorphologyOptions, method) );
+            (void) FormatLocaleFile(stderr,
+              "\n%s: Difference with original image",CommandOptionToMnemonic(
+              MagickMorphologyOptions, method) );
           curr_image->sync=MagickFalse;
-          (void) CompositeImage(curr_image,DifferenceCompositeOp,image,0,0);
+          (void) CompositeImage(curr_image,DifferenceCompositeOp,image,0,0,
+            exception);
           break;
         case EdgeMorphology:
           if ( verbose == MagickTrue )
-            (void) FormatLocaleFile(stderr, "\n%s: Difference of Dilate and Erode",
-                 CommandOptionToMnemonic(MagickMorphologyOptions, method) );
+            (void) FormatLocaleFile(stderr,
+              "\n%s: Difference of Dilate and Erode",CommandOptionToMnemonic(
+              MagickMorphologyOptions, method) );
           curr_image->sync=MagickFalse;
           (void) CompositeImage(curr_image,DifferenceCompositeOp,save_image,0,
-            0);
+            0,exception);
           save_image = DestroyImage(save_image); /* finished with save image */
           break;
         default:
@@ -4135,7 +4139,8 @@
             (void) FormatLocaleFile(stderr, " (compose \"%s\")",
                  CommandOptionToMnemonic(MagickComposeOptions, rslt_compose) );
           rslt_image->sync=MagickFalse;
-          (void) CompositeImage(rslt_image, rslt_compose, curr_image, 0, 0);
+          (void) CompositeImage(rslt_image, rslt_compose, curr_image, 0, 0,
+            exception);
           curr_image = DestroyImage(curr_image);
           curr_image = (Image *) image;  /* continue with original image */
         }
diff --git a/MagickCore/nt-base.c b/MagickCore/nt-base.c
index 4ba6a9d..b8a088e 100644
--- a/MagickCore/nt-base.c
+++ b/MagickCore/nt-base.c
@@ -216,7 +216,7 @@
   if ( bitmap.bmBits == NULL )
     bitmap.bmBits = bitmap_bits;
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    TransformImageColorspace(image,RGBColorspace);
+    TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Extract crop image.
   */
@@ -561,7 +561,7 @@
   q=bitmap_bits;
   if (bitmap.bmBits == NULL)
     bitmap.bmBits=bitmap_bits;
-  (void) TransformImageColorspace(image,RGBColorspace);
+  (void) TransformImageColorspace(image,RGBColorspace,exception);
   exception=(&image->exception);
   for (y=0; y < (ssize_t) image->rows; y++)
   {
diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c
index 1a4e8e7..f453eee 100644
--- a/MagickCore/quantize.c
+++ b/MagickCore/quantize.c
@@ -511,12 +511,12 @@
   if ((cube_info->quantize_info->colorspace != UndefinedColorspace) &&
       (cube_info->quantize_info->colorspace != CMYKColorspace))
     (void) TransformImageColorspace((Image *) image,
-      cube_info->quantize_info->colorspace);
+      cube_info->quantize_info->colorspace,exception);
   else
     if ((image->colorspace != GRAYColorspace) &&
         (IsRGBColorspace(image->colorspace) == MagickFalse) &&
         (image->colorspace != CMYColorspace))
-      (void) TransformImageColorspace((Image *) image,RGBColorspace);
+      (void) TransformImageColorspace((Image *) image,RGBColorspace,exception);
   if (AcquireImageColormap(image,cube_info->colors,exception) == MagickFalse)
     ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
       image->filename);
@@ -679,7 +679,7 @@
   (void) SyncImage(image);
   if ((cube_info->quantize_info->colorspace != UndefinedColorspace) &&
       (cube_info->quantize_info->colorspace != CMYKColorspace))
-    (void) TransformImageColorspace((Image *) image,RGBColorspace);
+    (void) TransformImageColorspace((Image *) image,RGBColorspace,exception);
   return(MagickTrue);
 }
 
@@ -797,12 +797,12 @@
   if ((cube_info->quantize_info->colorspace != UndefinedColorspace) &&
       (cube_info->quantize_info->colorspace != CMYKColorspace))
     (void) TransformImageColorspace((Image *) image,
-      cube_info->quantize_info->colorspace);
+      cube_info->quantize_info->colorspace,exception);
   else
     if ((image->colorspace != GRAYColorspace) &&
         (image->colorspace != CMYColorspace) &&
         (IsRGBColorspace(image->colorspace) == MagickFalse))
-      (void) TransformImageColorspace((Image *) image,RGBColorspace);
+      (void) TransformImageColorspace((Image *) image,RGBColorspace,exception);
   midpoint.red=(MagickRealType) QuantumRange/2.0;
   midpoint.green=(MagickRealType) QuantumRange/2.0;
   midpoint.blue=(MagickRealType) QuantumRange/2.0;
@@ -997,7 +997,7 @@
   image_view=DestroyCacheView(image_view);
   if ((cube_info->quantize_info->colorspace != UndefinedColorspace) &&
       (cube_info->quantize_info->colorspace != CMYKColorspace))
-    (void) TransformImageColorspace((Image *) image,RGBColorspace);
+    (void) TransformImageColorspace((Image *) image,RGBColorspace,exception);
   return(MagickTrue);
 }
 
@@ -3241,7 +3241,7 @@
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
   if (image->type != GrayscaleType)
-    (void) TransformImageColorspace(image,GRAYColorspace);
+    (void) TransformImageColorspace(image,GRAYColorspace,exception);
   colormap_index=(ssize_t *) AcquireQuantumMemory(MaxMap+1,
     sizeof(*colormap_index));
   if (colormap_index == (ssize_t *) NULL)
diff --git a/MagickCore/segment.c b/MagickCore/segment.c
index a56976d..b5e1968 100644
--- a/MagickCore/segment.c
+++ b/MagickCore/segment.c
@@ -1830,7 +1830,7 @@
       }
   }
   if (IsRGBColorspace(colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,colorspace);
+    (void) TransformImageColorspace(image,colorspace,exception);
   /*
     Initialize histogram.
   */
@@ -1847,7 +1847,7 @@
   status=Classify(image,extrema,cluster_threshold,WeightingExponent,verbose,
     exception);
   if (IsRGBColorspace(colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,colorspace);
+    (void) TransformImageColorspace(image,colorspace,exception);
   /*
     Relinquish resources.
   */
diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c
index 5cd022b..22690fb 100644
--- a/MagickCore/threshold.c
+++ b/MagickCore/threshold.c
@@ -339,7 +339,8 @@
 %
 %  The format of the BilevelImage method is:
 %
-%      MagickBooleanType BilevelImage(Image *image,const double threshold)
+%      MagickBooleanType BilevelImage(Image *image,const double threshold,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -347,20 +348,20 @@
 %
 %    o threshold: define the threshold values.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 %  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)
+MagickExport MagickBooleanType BilevelImage(Image *image,const double threshold,
+  ExceptionInfo *exception)
 {
 #define ThresholdImageTag  "Threshold/Image"
 
   CacheView
     *image_view;
 
-  ExceptionInfo
-    *exception;
-
   MagickBooleanType
     status;
 
@@ -374,7 +375,6 @@
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
-  exception=(&image->exception);
   if (SetImageStorageClass(image,DirectClass,exception) == MagickFalse)
     return(MagickFalse);
   /*
diff --git a/MagickCore/threshold.h b/MagickCore/threshold.h
index c99d4b6..e37e507 100644
--- a/MagickCore/threshold.h
+++ b/MagickCore/threshold.h
@@ -34,7 +34,7 @@
   *GetThresholdMap(const char *,ExceptionInfo *);
 
 extern MagickExport MagickBooleanType
-  BilevelImage(Image *,const double),
+  BilevelImage(Image *,const double,ExceptionInfo *),
   BlackThresholdImage(Image *,const char *,ExceptionInfo *),
   ClampImage(Image *,ExceptionInfo *),
   ListThresholdMaps(FILE *,ExceptionInfo *),
diff --git a/MagickCore/transform.c b/MagickCore/transform.c
index 745afc4..7f69276 100644
--- a/MagickCore/transform.c
+++ b/MagickCore/transform.c
@@ -1068,7 +1068,7 @@
     extent_image->matte=MagickTrue;
   (void) SetImageBackgroundColor(extent_image);
   (void) CompositeImage(extent_image,image->compose,image,-geometry->x,
-    -geometry->y);
+    -geometry->y,exception);
   return(extent_image);
 }
 
@@ -1951,7 +1951,7 @@
 %  The format of the TransformImage method is:
 %
 %      MagickBooleanType TransformImage(Image **image,const char *crop_geometry,
-%        const char *image_geometry)
+%        const char *image_geometry,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -1963,9 +1963,11 @@
 %    o image_geometry: An image geometry string.  This geometry defines the
 %      final size of the image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType TransformImage(Image **image,
-  const char *crop_geometry,const char *image_geometry)
+  const char *crop_geometry,const char *image_geometry,ExceptionInfo *exception)
 {
   Image
     *resize_image,
@@ -1990,9 +1992,9 @@
       /*
         Crop image to a user specified size.
       */
-      crop_image=CropImageToTiles(*image,crop_geometry,&(*image)->exception);
+      crop_image=CropImageToTiles(*image,crop_geometry,exception);
       if (crop_image == (Image *) NULL)
-        transform_image=CloneImage(*image,0,0,MagickTrue,&(*image)->exception);
+        transform_image=CloneImage(*image,0,0,MagickTrue,exception);
       else
         {
           transform_image=DestroyImage(transform_image);
@@ -2006,14 +2008,13 @@
   /*
     Scale image to a user specified size.
   */
-  flags=ParseRegionGeometry(transform_image,image_geometry,&geometry,
-    &(*image)->exception);
+  flags=ParseRegionGeometry(transform_image,image_geometry,&geometry,exception);
   (void) flags;
   if ((transform_image->columns == geometry.width) &&
       (transform_image->rows == geometry.height))
     return(MagickTrue);
   resize_image=ResizeImage(transform_image,geometry.width,geometry.height,
-    transform_image->filter,transform_image->blur,&(*image)->exception);
+    transform_image->filter,transform_image->blur,exception);
   if (resize_image == (Image *) NULL)
     return(MagickFalse);
   transform_image=DestroyImage(transform_image);
@@ -2038,7 +2039,8 @@
 %  The format of the TransformImage method is:
 %
 %      MagickBooleanType TransformImages(Image **image,
-%        const char *crop_geometry,const char *image_geometry)
+%        const char *crop_geometry,const char *image_geometry,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -2050,9 +2052,11 @@
 %    o image_geometry: An image geometry string.  This geometry defines the
 %      final size of the image.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 MagickExport MagickBooleanType TransformImages(Image **images,
-  const char *crop_geometry,const char *image_geometry)
+  const char *crop_geometry,const char *image_geometry,ExceptionInfo *exception)
 {
   Image
     *image,
@@ -2070,7 +2074,7 @@
   if ((*images)->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
       (*images)->filename);
-  image_list=ImageListToArray(*images,&(*images)->exception);
+  image_list=ImageListToArray(*images,exception);
   if (image_list == (Image **) NULL)
     return(MagickFalse);
   status=MagickTrue;
@@ -2078,7 +2082,7 @@
   for (i=0; image_list[i] != (Image *) NULL; i++)
   {
     image=image_list[i];
-    status|=TransformImage(&image,crop_geometry,image_geometry);
+    status|=TransformImage(&image,crop_geometry,image_geometry,exception);
     AppendImageToList(&transform_images,image);
   }
   *images=transform_images;
diff --git a/MagickCore/transform.h b/MagickCore/transform.h
index 07098aa..260ed34 100644
--- a/MagickCore/transform.h
+++ b/MagickCore/transform.h
@@ -39,8 +39,8 @@
   *TrimImage(const Image *,ExceptionInfo *);
 
 extern MagickExport MagickBooleanType
-  TransformImage(Image **,const char *,const char *),
-  TransformImages(Image **,const char *,const char *);
+  TransformImage(Image **,const char *,const char *,ExceptionInfo *),
+  TransformImages(Image **,const char *,const char *,ExceptionInfo *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }
diff --git a/MagickCore/xwindow.c b/MagickCore/xwindow.c
index 4a232a8..4649415 100644
--- a/MagickCore/xwindow.c
+++ b/MagickCore/xwindow.c
@@ -214,9 +214,9 @@
 
 static void
   XMakeImageLSBFirst(const XResourceInfo *,const XWindowInfo *,Image *,
-    XImage *,XImage *),
+    XImage *,XImage *,ExceptionInfo *),
   XMakeImageMSBFirst(const XResourceInfo *,const XWindowInfo *,Image *,
-    XImage *,XImage *);
+    XImage *,XImage *,ExceptionInfo *);
 
 static Window
   XSelectWindow(Display *,RectangleInfo *);
@@ -633,7 +633,8 @@
       */
       (void) FormatLocaleString(image_geometry,MaxTextExtent,"%ux%u",
         width,height);
-      (void) TransformImage(&annotate_image,(char *) NULL,image_geometry);
+      (void) TransformImage(&annotate_image,(char *) NULL,image_geometry,
+        exception);
     }
   if (annotate_info->degrees != 0.0)
     {
@@ -702,7 +703,8 @@
   (void) XParseGeometry(annotate_info->geometry,&x,&y,&width,&height);
   matte=image->matte;
   (void) CompositeImage(image,annotate_image->matte != MagickFalse ?
-    OverCompositeOp : CopyCompositeOp,annotate_image,(ssize_t) x,(ssize_t) y);
+    OverCompositeOp : CopyCompositeOp,annotate_image,(ssize_t) x,(ssize_t) y,
+    exception);
   image->matte=matte;
   annotate_image=DestroyImage(annotate_image);
   return(MagickTrue);
@@ -2547,7 +2549,8 @@
       */
       (void) FormatLocaleString(image_geometry,MaxTextExtent,"%ux%u",
         width,height);
-      (void) TransformImage(&draw_image,(char *) NULL,image_geometry);
+      (void) TransformImage(&draw_image,(char *) NULL,image_geometry,
+        exception);
     }
   if (draw_info->degrees != 0.0)
     {
@@ -2638,12 +2641,12 @@
   (void) XParseGeometry(draw_info->geometry,&x,&y,&width,&height);
   if (draw_info->stencil == TransparentStencil)
     (void) CompositeImage(image,CopyOpacityCompositeOp,draw_image,(ssize_t) x,
-      (ssize_t) y);
+      (ssize_t) y,exception);
   else
     {
       matte=image->matte;
       (void) CompositeImage(image,OverCompositeOp,draw_image,(ssize_t) x,
-        (ssize_t) y);
+        (ssize_t) y,exception);
       image->matte=matte;
     }
   draw_image=DestroyImage(draw_image);
@@ -4519,7 +4522,7 @@
         if (y_offset < 0)
           y_offset=0;
         (void) CompositeImage(image,CopyCompositeOp,composite_image,(ssize_t)
-          x_offset,(ssize_t) y_offset);
+          x_offset,(ssize_t) y_offset,exception);
       }
       /*
         Relinquish resources.
@@ -4527,8 +4530,8 @@
       while (colormap_info != (ColormapInfo *) NULL)
       {
         next=colormap_info->next;
-        colormap_info->colors=(XColor *)
-          RelinquishMagickMemory(colormap_info->colors);
+        colormap_info->colors=(XColor *) RelinquishMagickMemory(
+          colormap_info->colors);
         colormap_info=(ColormapInfo *) RelinquishMagickMemory(colormap_info);
         colormap_info=next;
       }
@@ -5778,10 +5781,10 @@
       if ((ximage->byte_order == LSBFirst) || ((ximage->format == XYBitmap) &&
           (ximage->bitmap_bit_order == LSBFirst)))
         XMakeImageLSBFirst(resource_info,window,window->image,ximage,
-          matte_image);
+          matte_image,exception);
       else
         XMakeImageMSBFirst(resource_info,window,window->image,ximage,
-          matte_image);
+          matte_image,exception);
     }
   if (window->matte_image != (XImage *) NULL)
     {
@@ -5841,7 +5844,8 @@
 %
 %  The format of the XMakeImageLSBFirst method is:
 %
-%      void XMakeImageLSBFirst(Display *display,XWindows *windows)
+%      void XMakeImageLSBFirst(Display *display,XWindows *windows,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -5857,9 +5861,12 @@
 %    o matte_image: Specifies a pointer to a XImage structure;  returned from
 %      XCreateImage.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 static void XMakeImageLSBFirst(const XResourceInfo *resource_info,
-  const XWindowInfo *window,Image *image,XImage *ximage,XImage *matte_image)
+  const XWindowInfo *window,Image *image,XImage *ximage,XImage *matte_image,
+  ExceptionInfo *exception)
 {
   CacheView
     *canvas_view;
@@ -5925,7 +5932,8 @@
         {
           canvas=CloneImage(image,0,0,MagickTrue,&image->exception);
           if (canvas != (Image *) NULL)
-            (void) CompositeImage(canvas,DstOverCompositeOp,pattern,0,0);
+            (void) CompositeImage(canvas,DstOverCompositeOp,pattern,0,0,
+              exception);
           pattern=DestroyImage(pattern);
         }
     }
@@ -6468,7 +6476,8 @@
 %
 %  The format of the XMakeImageMSBFirst method is:
 %
-%      XMakeImageMSBFirst(resource_info,window,image,ximage,matte_image)
+%      XMakeImageMSBFirst(resource_info,window,image,ximage,matte_image,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -6484,9 +6493,12 @@
 %    o matte_image: Specifies a pointer to a XImage structure;  returned from
 %      XCreateImage.
 %
+%    o exception: return any errors or warnings in this structure.
+%
 */
 static void XMakeImageMSBFirst(const XResourceInfo *resource_info,
-  const XWindowInfo *window,Image *image,XImage *ximage,XImage *matte_image)
+  const XWindowInfo *window,Image *image,XImage *ximage,XImage *matte_image,
+  ExceptionInfo *exception)
 {
   CacheView
     *canvas_view;
@@ -6552,7 +6564,8 @@
         {
           canvas=CloneImage(image,0,0,MagickTrue,&image->exception);
           if (canvas != (Image *) NULL)
-            (void) CompositeImage(canvas,DstOverCompositeOp,pattern,0,0);
+            (void) CompositeImage(canvas,DstOverCompositeOp,pattern,0,0,
+              exception);
           pattern=DestroyImage(pattern);
         }
     }
diff --git a/MagickWand/compare.c b/MagickWand/compare.c
index 5e9d778..aef8301 100644
--- a/MagickWand/compare.c
+++ b/MagickWand/compare.c
@@ -971,7 +971,7 @@
         else
           {
             (void) CompositeImage(composite_image,CopyCompositeOp,
-              reconstruct_image,offset.x,offset.y);
+              reconstruct_image,offset.x,offset.y,exception);
             difference_image=CompareImages(image,composite_image,metric,
               &distortion,exception);
             if (difference_image != (Image *) NULL)
diff --git a/MagickWand/composite.c b/MagickWand/composite.c
index d7f08f0..00e6c40 100644
--- a/MagickWand/composite.c
+++ b/MagickWand/composite.c
@@ -194,7 +194,7 @@
               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&=CompositeImage(*image,composite_options->compose,
-                    composite_image,x,y);
+                    composite_image,x,y,exception);
               GetImageException(*image,exception);
             }
           else
@@ -217,7 +217,7 @@
                 Digitally composite image.
               */
               status&=CompositeImage(*image,composite_options->compose,
-                composite_image,geometry.x,geometry.y);
+                composite_image,geometry.x,geometry.y,exception);
               GetImageException(*image,exception);
             }
     }
@@ -1630,7 +1630,7 @@
   RemoveImageStack(composite_image);
   RemoveImageStack(images);
   (void) TransformImage(&composite_image,(char *) NULL,
-    composite_image->geometry);
+    composite_image->geometry,exception);
   RemoveImageStack(mask_image);
   if (mask_image != (Image *) NULL)
     {
@@ -1641,7 +1641,7 @@
             Merge Y displacement into X displacement image.
           */
           (void) CompositeImage(composite_image,CopyGreenCompositeOp,mask_image,
-            0,0);
+            0,0,exception);
           mask_image=DestroyImage(mask_image);
         }
       else
diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c
index 58d21d1..ad6206d 100644
--- a/MagickWand/magick-image.c
+++ b/MagickWand/magick-image.c
@@ -1796,9 +1796,8 @@
   if ((wand->images == (Image *) NULL) ||
       (composite_wand->images == (Image *) NULL))
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  status=CompositeImage(wand->images,compose,composite_wand->images,x,y);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
+  status=CompositeImage(wand->images,compose,composite_wand->images,x,y,
+    wand->exception);
   return(status);
 }
 
@@ -2879,8 +2878,6 @@
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
   status=ExportImagePixels(wand->images,x,y,columns,rows,map,
     storage,pixels,wand->exception);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
   return(status);
 }
 
@@ -7671,9 +7668,6 @@
   char
     threshold[MaxTextExtent];
 
-  MagickBooleanType
-    status;
-
   assert(wand != (MagickWand *) NULL);
   assert(wand->signature == WandSignature);
   if (wand->debug != MagickFalse)
@@ -7681,10 +7675,7 @@
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
   (void) FormatLocaleString(threshold,MaxTextExtent,"%gx%g",low,high);
-  status=RandomThresholdImage(wand->images,threshold,wand->exception);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
-  return(status);
+  return(RandomThresholdImage(wand->images,threshold,wand->exception));
 }
 
 /*
@@ -8423,19 +8414,13 @@
 */
 WandExport MagickBooleanType MagickSeparateImage(MagickWand *wand)
 {
-  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=SeparateImage(wand->images);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
-  return(status);
+  return(SeparateImage(wand->images,wand->exception));
 }
 
 /*
@@ -8799,9 +8784,6 @@
 WandExport MagickBooleanType MagickSetImageColor(MagickWand *wand,
   const PixelWand *color)
 {
-  MagickBooleanType
-    status;
-
   PixelInfo
     pixel;
 
@@ -8810,10 +8792,7 @@
   if (wand->debug != MagickFalse)
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   PixelGetMagickColor(color,&pixel);
-  status=SetImageColor(wand->images,&pixel);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
-  return(status);
+  return(SetImageColor(wand->images,&pixel,wand->exception));
 }
 
 /*
@@ -9570,7 +9549,7 @@
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
   if ((wand->images->matte == MagickFalse) && (matte != MagickFalse))
-    (void) SetImageAlpha(wand->images,OpaqueAlpha);
+    (void) SetImageAlpha(wand->images,OpaqueAlpha,wand->exception);
   wand->images->matte=matte;
   return(MagickTrue);
 }
@@ -9651,9 +9630,8 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  status=SetImageAlpha(wand->images,ClampToQuantum(QuantumRange*alpha));
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
+  status=SetImageAlpha(wand->images,ClampToQuantum(QuantumRange*alpha),
+    wand->exception);
   return(status);
 }
 
@@ -11036,19 +11014,13 @@
 */
 WandExport MagickBooleanType MagickStripImage(MagickWand *wand)
 {
-  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=StripImage(wand->images);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
-  return(status);
+  return(StripImage(wand->images,wand->exception));
 }
 
 /*
@@ -11148,10 +11120,9 @@
   texture_image=CloneImage(wand->images,0,0,MagickTrue,wand->exception);
   if (texture_image == (Image *) NULL)
     return((MagickWand *) NULL);
-  status=TextureImage(texture_image,texture_wand->images);
+  status=TextureImage(texture_image,texture_wand->images,wand->exception);
   if (status == MagickFalse)
     {
-      InheritException(wand->exception,&texture_image->exception);
       texture_image=DestroyImage(texture_image);
       return((MagickWand *) NULL);
     }
@@ -11211,9 +11182,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  status=BilevelImage(wand->images,threshold);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
+  status=BilevelImage(wand->images,threshold,wand->exception);
   return(status);
 }
 
@@ -11386,10 +11355,9 @@
   transform_image=CloneImage(wand->images,0,0,MagickTrue,wand->exception);
   if (transform_image == (Image *) NULL)
     return((MagickWand *) NULL);
-  status=TransformImage(&transform_image,crop,geometry);
+  status=TransformImage(&transform_image,crop,geometry,wand->exception);
   if (status == MagickFalse)
     {
-      InheritException(wand->exception,&transform_image->exception);
       transform_image=DestroyImage(transform_image);
       return((MagickWand *) NULL);
     }
@@ -11434,7 +11402,7 @@
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
   if (wand->images == (Image *) NULL)
     ThrowWandException(WandError,"ContainsNoImages",wand->name);
-  return(TransformImageColorspace(wand->images,colorspace));
+  return(TransformImageColorspace(wand->images,colorspace,wand->exception));
 }
 
 /*
@@ -11863,9 +11831,6 @@
   char
     thresholds[MaxTextExtent];
 
-  MagickBooleanType
-    status;
-
   assert(wand != (MagickWand *) NULL);
   assert(wand->signature == WandSignature);
   if (wand->debug != MagickFalse)
@@ -11876,10 +11841,7 @@
     QuantumFormat "," QuantumFormat "," QuantumFormat "," QuantumFormat,
     PixelGetRedQuantum(threshold),PixelGetGreenQuantum(threshold),
     PixelGetBlueQuantum(threshold),PixelGetAlphaQuantum(threshold));
-  status=WhiteThresholdImage(wand->images,thresholds,&wand->images->exception);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
-  return(status);
+  return(WhiteThresholdImage(wand->images,thresholds,wand->exception));
 }
 
 /*
@@ -11935,7 +11897,7 @@
     return(MagickFalse);
   write_info=CloneImageInfo(wand->image_info);
   write_info->adjoin=MagickTrue;
-  status=WriteImage(write_info,image,&image->exception);
+  status=WriteImage(write_info,image,wand->exception);
   image=DestroyImage(image);
   write_info=DestroyImageInfo(write_info);
   return(status);
@@ -11989,7 +11951,7 @@
   write_info=CloneImageInfo(wand->image_info);
   SetImageInfoFile(write_info,file);
   write_info->adjoin=MagickTrue;
-  status=WriteImage(write_info,image,&image->exception);
+  status=WriteImage(write_info,image,wand->exception);
   write_info=DestroyImageInfo(write_info);
   image=DestroyImage(image);
   return(status);
@@ -12040,8 +12002,6 @@
   write_info=CloneImageInfo(wand->image_info);
   write_info->adjoin=adjoin;
   status=WriteImages(write_info,wand->images,filename,wand->exception);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
   write_info=DestroyImageInfo(write_info);
   return(status);
 }
@@ -12090,7 +12050,5 @@
   status=WriteImages(write_info,wand->images,(const char *) NULL,
     wand->exception);
   write_info=DestroyImageInfo(write_info);
-  if (status == MagickFalse)
-    InheritException(wand->exception,&wand->images->exception);
   return(status);
 }
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index 0ba24f5..ae2ddd7 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -1177,13 +1177,13 @@
             (void) SyncImageSettings(mogrify_info,*image);
             if (*option == '+')
               {
-                (void) TransformImageColorspace(*image,RGBColorspace);
+                (void) TransformImageColorspace(*image,RGBColorspace,exception);
                 InheritException(exception,&(*image)->exception);
                 break;
               }
             colorspace=(ColorspaceType) ParseCommandOption(
               MagickColorspaceOptions,MagickFalse,argv[i+1]);
-            (void) TransformImageColorspace(*image,colorspace);
+            (void) TransformImageColorspace(*image,colorspace,exception);
             InheritException(exception,&(*image)->exception);
             break;
           }
@@ -2455,8 +2455,7 @@
                 */
                 (void) CompositeImage(region_image,region_image->matte !=
                    MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
-                   region_geometry.x,region_geometry.y);
-                InheritException(exception,&region_image->exception);
+                   region_geometry.x,region_geometry.y,exception);
                 *image=DestroyImage(*image);
                 *image=region_image;
                 region_image = (Image *) NULL;
@@ -2870,8 +2869,7 @@
               Strip image of profiles and comments.
             */
             (void) SyncImageSettings(mogrify_info,*image);
-            (void) StripImage(*image);
-            InheritException(exception,&(*image)->exception);
+            (void) StripImage(*image,exception);
             break;
           }
         if (LocaleCompare("stroke",option+1) == 0)
@@ -2942,7 +2940,7 @@
               threshold=(double) QuantumRange/2;
             else
               threshold=SiPrefixToDouble(argv[i+1],QuantumRange);
-            (void) BilevelImage(*image,threshold);
+            (void) BilevelImage(*image,threshold,exception);
             InheritException(exception,&(*image)->exception);
             break;
           }
@@ -3200,8 +3198,7 @@
       (void) SyncImageSettings(mogrify_info,*image);
       (void) CompositeImage(region_image,region_image->matte !=
          MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
-         region_geometry.x,region_geometry.y);
-      InheritException(exception,&region_image->exception);
+         region_geometry.x,region_geometry.y,exception);
       *image=DestroyImage(*image);
       *image=region_image;
       region_image = (Image *) NULL;
@@ -7444,7 +7441,7 @@
                 break;
               }
             (void) TransformImage(&composite_image,(char *) NULL,
-              composite_image->geometry);
+              composite_image->geometry,exception);
             SetGeometry(composite_image,&geometry);
             (void) ParseAbsoluteGeometry(composite_image->geometry,&geometry);
             GravityAdjustGeometry(image->columns,image->rows,image->gravity,
@@ -7459,7 +7456,7 @@
                       Merge Y displacement into X displacement image.
                     */
                     (void) CompositeImage(composite_image,CopyGreenCompositeOp,
-                      mask_image,0,0);
+                      mask_image,0,0,exception);
                     mask_image=DestroyImage(mask_image);
                   }
                 else
@@ -7473,7 +7470,7 @@
                   }
               }
             (void) CompositeImage(image,image->compose,composite_image,
-              geometry.x,geometry.y);
+              geometry.x,geometry.y,exception);
             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 76553d0..560886d 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -1279,7 +1279,8 @@
               break;
             }
           for ( ; image; image=image->next)
-            (void) TransformImageColorspace(image,(ColorspaceType) sp);
+            (void) TransformImageColorspace(image,(ColorspaceType) sp,
+              exception);
           break;
         }
       if (LocaleCompare(attribute,"comment") == 0)
@@ -8269,7 +8270,7 @@
               if (compose != DissolveCompositeOp)
                 (void) SetImageAlpha(composite_image,(Quantum)
                   SiPrefixToDouble(argument_list[6].string_reference,
-                  QuantumRange));
+                  QuantumRange),exception);
               else
                 {
                   CacheView
@@ -8299,7 +8300,7 @@
                   opacity=(Quantum) SiPrefixToDouble(
                     argument_list[6].string_reference,QuantumRange);
                   if (composite_image->matte != MagickTrue)
-                    (void) SetImageAlpha(composite_image,OpaqueAlpha);
+                    (void) SetImageAlpha(composite_image,OpaqueAlpha,exception);
                   composite_view=AcquireCacheView(composite_image);
                   for (y=0; y < (ssize_t) composite_image->rows ; y++)
                   {
@@ -8364,9 +8365,11 @@
                 for (x=0; x < (ssize_t) image->columns; x+=(ssize_t) composite_image->columns)
                 {
                   if (attribute_flag[8] != 0) /* rotate */
-                    (void) CompositeImage(image,compose,rotate_image,x,y);
+                    (void) CompositeImage(image,compose,rotate_image,x,y,
+                      exception);
                   else
-                    (void) CompositeImage(image,compose,composite_image,x,y);
+                    (void) CompositeImage(image,compose,composite_image,x,y,
+                      exception);
                 }
               if (attribute_flag[8] != 0) /* rotate */
                 rotate_image=DestroyImage(rotate_image);
@@ -8400,7 +8403,7 @@
                   composite_image=CloneImage(composite_image,0,0,MagickTrue,
                     &image->exception);
                   (void) CompositeImage(composite_image,CopyGreenCompositeOp,
-                    argument_list[10].image_reference,0,0);
+                    argument_list[10].image_reference,0,0,exception);
                 }
               else
                 {
@@ -8425,7 +8428,8 @@
             exception);
           channel_mask=SetPixelChannelMask(image,channel);
           if (attribute_flag[8] == 0) /* no rotate */
-            CompositeImage(image,compose,composite_image,geometry.x,geometry.y);
+            CompositeImage(image,compose,composite_image,geometry.x,geometry.y,
+              exception);
           else
             {
               /*
@@ -8435,7 +8439,8 @@
                 composite_image->columns)/2;
               geometry.y-=(ssize_t) (rotate_image->rows-
                 composite_image->rows)/2;
-              CompositeImage(image,compose,rotate_image,geometry.x,geometry.y);
+              CompositeImage(image,compose,rotate_image,geometry.x,geometry.y,
+                exception);
               rotate_image=DestroyImage(rotate_image);
             }
           if (attribute_flag[10] != 0) /* mask */
@@ -8784,7 +8789,7 @@
           if (attribute_flag[2] != 0)
             geometry.y=argument_list[2].integer_reference;
           if (image->matte == MagickFalse)
-            (void) SetImageAlpha(image,OpaqueAlpha);
+            (void) SetImageAlpha(image,OpaqueAlpha,exception);
           (void) GetOneVirtualPixel(image,geometry.x,geometry.y,virtual_pixel,
             exception);
           target.red=virtual_pixel[RedPixelChannel];
@@ -9026,7 +9031,7 @@
         {
           if (attribute_flag[0] == 0)
             break;
-          TextureImage(image,argument_list[0].image_reference);
+          TextureImage(image,argument_list[0].image_reference,exception);
           break;
         }
         case 55:  /* Evalute */
@@ -9091,7 +9096,7 @@
           threshold=SiPrefixToDouble(argument_list[0].string_reference,
             QuantumRange);
           channel_mask=SetPixelChannelMask(image,channel);
-          (void) BilevelImage(image,threshold);
+          (void) BilevelImage(image,threshold,exception);
           (void) SetPixelChannelMask(image,channel_mask);
           break;
         }
@@ -9150,7 +9155,7 @@
           if (attribute_flag[0] != 0)
             channel=(ChannelType) argument_list[0].integer_reference;
           channel_mask=SetPixelChannelMask(image,channel);
-          (void) SeparateImage(image);
+          (void) SeparateImage(image,exception);
           (void) SetPixelChannelMask(image,channel_mask);
           break;
         }
@@ -9738,7 +9743,7 @@
         }
         case 84:  /* Strip */
         {
-          (void) StripImage(image);
+          (void) StripImage(image,exception);
           break;
         }
         case 85:  /* Tint */
@@ -9761,7 +9766,7 @@
           if (attribute_flag[0] != 0)
             channel=(ChannelType) argument_list[0].integer_reference;
           channel_mask=SetPixelChannelMask(image,channel);
-          (void) SeparateImage(image);
+          (void) SeparateImage(image,exception);
           (void) SetPixelChannelMask(image,channel_mask);
           break;
         }
@@ -10762,7 +10767,7 @@
           if (attribute_flag[0] != 0)
             (void) QueryColorCompliance(argument_list[0].string_reference,
               AllCompliance,&color,exception);
-          (void) SetImageColor(image,&color);
+          (void) SetImageColor(image,&color,exception);
           break;
         }
         case 136:  /* Mode */
@@ -10824,7 +10829,7 @@
             Composite region.
           */ 
           status=CompositeImage(region_image,CopyCompositeOp,image,
-            region_info.x,region_info.y);
+            region_info.x,region_info.y,exception);
           (void) status;
           (void) CatchImageException(region_image);
           image=DestroyImage(image);
@@ -14090,7 +14095,7 @@
       clone=CloneImage(image,0,0,MagickTrue,exception);
       if ((clone == (Image *) NULL) || (exception->severity >= ErrorException))
         goto PerlException;
-      TransformImage(&clone,crop_geometry,geometry);
+      TransformImage(&clone,crop_geometry,geometry,exception);
       for ( ; clone; clone=clone->next)
       {
         AddImageToRegistry(sv,clone);
diff --git a/coders/aai.c b/coders/aai.c
index 490d812..bcde36c 100644
--- a/coders/aai.c
+++ b/coders/aai.c
@@ -365,7 +365,7 @@
       Write AAI header.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     (void) WriteBlobLSBLong(image,(unsigned int) image->columns);
     (void) WriteBlobLSBLong(image,(unsigned int) image->rows);
     /*
diff --git a/coders/art.c b/coders/art.c
index c102f02..fbb8585 100644
--- a/coders/art.c
+++ b/coders/art.c
@@ -323,7 +323,7 @@
   (void) WriteBlobLSBShort(image,0);
   (void) WriteBlobLSBShort(image,(unsigned short) image->rows);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   length=(image->columns+7)/8;
   pixels=(unsigned char *) AcquireQuantumMemory(length,sizeof(*pixels));
   if (pixels == (unsigned char *) NULL)
diff --git a/coders/avs.c b/coders/avs.c
index 2127d90..dc9012a 100644
--- a/coders/avs.c
+++ b/coders/avs.c
@@ -362,7 +362,7 @@
       Write AVS header.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     (void) WriteBlobMSBLong(image,(unsigned int) image->columns);
     (void) WriteBlobMSBLong(image,(unsigned int) image->rows);
     /*
diff --git a/coders/bgr.c b/coders/bgr.c
index d598b86..24d3393 100644
--- a/coders/bgr.c
+++ b/coders/bgr.c
@@ -1108,7 +1108,7 @@
       Convert MIFF to BGR raster pixels.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     if ((LocaleCompare(image_info->magick,"BGRA") == 0) &&
         (image->matte == MagickFalse))
       (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
diff --git a/coders/bmp.c b/coders/bmp.c
index 8c3b4a5..972cf17 100644
--- a/coders/bmp.c
+++ b/coders/bmp.c
@@ -1515,7 +1515,7 @@
       Initialize BMP raster file header.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     (void) ResetMagickMemory(&bmp_info,0,sizeof(bmp_info));
     bmp_info.file_size=14+12;
     if (type > 2)
diff --git a/coders/cin.c b/coders/cin.c
index 593b527..f7363df 100644
--- a/coders/cin.c
+++ b/coders/cin.c
@@ -912,7 +912,7 @@
   if (status == MagickFalse)
     return(status);
   if (image->colorspace != LogColorspace)
-    (void) TransformImageColorspace(image,LogColorspace);
+    (void) TransformImageColorspace(image,LogColorspace,exception);
   /*
     Write image information.
   */
diff --git a/coders/cip.c b/coders/cip.c
index 2b8ea20..b21b342 100644
--- a/coders/cip.c
+++ b/coders/cip.c
@@ -236,7 +236,7 @@
   (void) WriteBlobString(image,buffer);
   (void) WriteBlobString(image,"<Data>");
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   for (y=0; y < (ssize_t) image->rows; y++)
   {
     p=GetVirtualPixels(image,0,y,image->columns,1,exception);
diff --git a/coders/cmyk.c b/coders/cmyk.c
index 5a102c2..7777333 100644
--- a/coders/cmyk.c
+++ b/coders/cmyk.c
@@ -1225,7 +1225,7 @@
       Convert MIFF to CMYK raster pixels.
     */
     if (image->colorspace != CMYKColorspace)
-      (void) TransformImageColorspace(image,CMYKColorspace);
+      (void) TransformImageColorspace(image,CMYKColorspace,exception);
     if ((LocaleCompare(image_info->magick,"CMYKA") == 0) &&
         (image->matte == MagickFalse))
       (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
diff --git a/coders/dib.c b/coders/dib.c
index 80019d2..8e7f19c 100644
--- a/coders/dib.c
+++ b/coders/dib.c
@@ -1011,7 +1011,7 @@
     Initialize DIB raster file header.
   */
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   if (image->storage_class == DirectClass)
     {
       /*
diff --git a/coders/ept.c b/coders/ept.c
index 2f378f8..bc1c3bd 100644
--- a/coders/ept.c
+++ b/coders/ept.c
@@ -419,7 +419,7 @@
   (void) FormatLocaleString(filename,MaxTextExtent,"tiff:%s",
     write_info->filename); 
   (void) CopyMagickString(write_info->filename,filename,MaxTextExtent);
-  (void) TransformImage(&write_image,(char *) NULL,"512x512>");
+  (void) TransformImage(&write_image,(char *) NULL,"512x512>",exception);
   if ((write_image->storage_class == DirectClass) ||
       (write_image->colors > 256))
     {
diff --git a/coders/fax.c b/coders/fax.c
index f618c20..34b7a4b 100644
--- a/coders/fax.c
+++ b/coders/fax.c
@@ -331,7 +331,7 @@
       Convert MIFF to monochrome.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     status=HuffmanEncodeImage(write_info,image,image,exception);
     if (GetNextImageInList(image) == (Image *) NULL)
       break;
diff --git a/coders/fits.c b/coders/fits.c
index b22c8a9..dcea2e3 100644
--- a/coders/fits.c
+++ b/coders/fits.c
@@ -638,7 +638,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Allocate image memory.
   */
diff --git a/coders/fpx.c b/coders/fpx.c
index dd829fb..f690755 100644
--- a/coders/fpx.c
+++ b/coders/fpx.c
@@ -859,7 +859,7 @@
   */
   image->depth=8;
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   memory_limit=20000000;
   fpx_status=FPX_SetToolkitMemoryLimit(&memory_limit);
   if (fpx_status != FPX_OK)
diff --git a/coders/gif.c b/coders/gif.c
index b3c135b..35f74d8 100644
--- a/coders/gif.c
+++ b/coders/gif.c
@@ -1564,7 +1564,7 @@
   do
   {
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     opacity=(-1);
     if (IsImageOpaque(image,exception) != MagickFalse)
       {
diff --git a/coders/gradient.c b/coders/gradient.c
index b0d3336..e0353af 100644
--- a/coders/gradient.c
+++ b/coders/gradient.c
@@ -117,7 +117,7 @@
   image=AcquireImage(image_info,exception);
   if ((image->columns == 0) || (image->rows == 0))
     ThrowReaderException(OptionError,"MustSpecifyImageSize");
-  (void) SetImageAlpha(image,(Quantum) TransparentAlpha);
+  (void) SetImageAlpha(image,(Quantum) TransparentAlpha,exception);
   (void) CopyMagickString(image->filename,image_info->filename,MaxTextExtent);
   (void) CopyMagickString(colorname,image_info->filename,MaxTextExtent);
   (void) sscanf(image_info->filename,"%[^-]",colorname);
diff --git a/coders/gray.c b/coders/gray.c
index 8b2c310..7655df7 100644
--- a/coders/gray.c
+++ b/coders/gray.c
@@ -413,7 +413,7 @@
       Write grayscale pixels.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     quantum_type=GrayQuantum;
     quantum_info=AcquireQuantumInfo(image_info,image);
     if (quantum_info == (QuantumInfo *) NULL)
diff --git a/coders/hdr.c b/coders/hdr.c
index f4f0da0..3bed84a 100644
--- a/coders/hdr.c
+++ b/coders/hdr.c
@@ -687,7 +687,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Write header.
   */
diff --git a/coders/hrz.c b/coders/hrz.c
index 32c5b2b..9fe9ef3 100644
--- a/coders/hrz.c
+++ b/coders/hrz.c
@@ -308,7 +308,7 @@
   if (hrz_image == (Image *) NULL)
     return(MagickFalse);
   if (IsRGBColorspace(hrz_image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(hrz_image,RGBColorspace);
+    (void) TransformImageColorspace(hrz_image,RGBColorspace,exception);
   /*
     Allocate memory for pixels.
   */
diff --git a/coders/html.c b/coders/html.c
index da660ae..5218639 100644
--- a/coders/html.c
+++ b/coders/html.c
@@ -251,7 +251,7 @@
     return(status);
   (void) CloseBlob(image);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   *url='\0';
   if ((LocaleCompare(image_info->magick,"FTP") == 0) ||
       (LocaleCompare(image_info->magick,"HTTP") == 0))
diff --git a/coders/icon.c b/coders/icon.c
index 25a082d..29226c7 100644
--- a/coders/icon.c
+++ b/coders/icon.c
@@ -906,7 +906,7 @@
           Initialize ICON raster file header.
         */
         if (next->colorspace != RGBColorspace)
-          (void) TransformImageColorspace(next,RGBColorspace);
+          (void) TransformImageColorspace(next,RGBColorspace,exception);
         icon_info.file_size=14+12+28;
         icon_info.offset_bits=icon_info.file_size;
         icon_info.compression=BI_RGB;
diff --git a/coders/ipl.c b/coders/ipl.c
index dcaa9a6..5a78283 100644
--- a/coders/ipl.c
+++ b/coders/ipl.c
@@ -577,7 +577,7 @@
   ipl_info.height = (unsigned int) image->rows;
   
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   
   if(IsRGBColorspace(image->colorspace) == MagickTrue) { ipl_info.colors = 3; }
   else{ ipl_info.colors = 1; }
diff --git a/coders/jbig.c b/coders/jbig.c
index 0048cf8..4faf712 100644
--- a/coders/jbig.c
+++ b/coders/jbig.c
@@ -446,7 +446,7 @@
       Allocate pixel data.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     number_packets=(image->columns+7)/8;
     pixels=(unsigned char *) AcquireQuantumMemory(number_packets,
       image->rows*sizeof(*pixels));
diff --git a/coders/jp2.c b/coders/jp2.c
index d966bb3..8831ae1 100644
--- a/coders/jp2.c
+++ b/coders/jp2.c
@@ -858,7 +858,7 @@
     Initialize JPEG 2000 API.
   */
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   jp2_stream=JP2StreamManager(image);
   if (jp2_stream == (jas_stream_t *) NULL)
     ThrowWriterException(DelegateError,"UnableToManageJP2Stream");
diff --git a/coders/jpeg.c b/coders/jpeg.c
index af8c77c..7a853d1 100644
--- a/coders/jpeg.c
+++ b/coders/jpeg.c
@@ -1857,7 +1857,7 @@
     default:
     {
       if (IsRGBColorspace(image->colorspace) == MagickFalse)
-        (void) TransformImageColorspace(image,RGBColorspace);
+        (void) TransformImageColorspace(image,RGBColorspace,exception);
       break;
     }
   }
diff --git a/coders/map.c b/coders/map.c
index 8e3c009..49de681 100644
--- a/coders/map.c
+++ b/coders/map.c
@@ -375,7 +375,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Allocate colormap.
   */
diff --git a/coders/mat.c b/coders/mat.c
index f5a852b..690f732 100644
--- a/coders/mat.c
+++ b/coders/mat.c
@@ -1215,7 +1215,7 @@
   do
   {
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
 
     is_gray = IsImageGray(image,exception);
     z = is_gray ? 0 : 3;
diff --git a/coders/mono.c b/coders/mono.c
index aa0b0a6..bcb0410 100644
--- a/coders/mono.c
+++ b/coders/mono.c
@@ -314,7 +314,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Convert image to a bi-level image.
   */
diff --git a/coders/msl.c b/coders/msl.c
index d74616a..6b55131 100644
--- a/coders/msl.c
+++ b/coders/msl.c
@@ -1923,7 +1923,8 @@
                           SetImageType(composite_image,TrueColorMatteType,
                             &exception);
                           (void) CompositeImage(composite_image,
-                            CopyOpacityCompositeOp,msl_info->image[j],0,0);
+                            CopyOpacityCompositeOp,msl_info->image[j],0,0,
+                            &exception);
                           break;
                         }
                     }
@@ -1953,13 +1954,14 @@
                       if (compose != DissolveCompositeOp)
                         {
                           (void) SetImageAlpha(composite_image,(Quantum)
-                            opacity);
+                            opacity,&exception);
                           break;
                         }
                       (void) SetImageArtifact(msl_info->image[n],
                                             "compose:args",value);
                       if (composite_image->matte != MagickTrue)
-                        (void) SetImageAlpha(composite_image,OpaqueAlpha);
+                        (void) SetImageAlpha(composite_image,OpaqueAlpha,
+                          &exception);
                       composite_view=AcquireCacheView(composite_image);
                       for (y=0; y < (ssize_t) composite_image->rows ; y++)
                       {
@@ -2024,10 +2026,10 @@
                          {
                            if (rotate_image != (Image *) NULL)
                              (void) CompositeImage(image,compose,rotate_image,
-                               x,y);
+                               x,y,&exception);
                            else
                              (void) CompositeImage(image,compose,
-                               composite_image,x,y);
+                               composite_image,x,y,&exception);
                          }
                       if (rotate_image != (Image *) NULL)
                         rotate_image=DestroyImage(rotate_image);
@@ -2078,7 +2080,8 @@
             &exception);
           channel_mask=SetPixelChannelMask(image,channel);
           if (rotate_image == (Image *) NULL)
-            CompositeImage(image,compose,composite_image,geometry.x,geometry.y);
+            CompositeImage(image,compose,composite_image,geometry.x,geometry.y,
+              &exception);
           else
             {
               /*
@@ -2088,7 +2091,8 @@
                 composite_image->columns)/2;
               geometry.y-=(ssize_t) (rotate_image->rows-
                 composite_image->rows)/2;
-              CompositeImage(image,compose,rotate_image,geometry.x,geometry.y);
+              CompositeImage(image,compose,rotate_image,geometry.x,geometry.y,
+                &exception);
               rotate_image=DestroyImage(rotate_image);
             }
           (void) SetPixelChannelMask(image,channel_mask);
@@ -6069,7 +6073,7 @@
                     ThrowMSLException(OptionError,"UnrecognizedColorspace",
                       value);
                   (void) TransformImageColorspace(msl_info->image[n],
-                    (ColorspaceType) colorspace);
+                    (ColorspaceType) colorspace,&exception);
                   break;
                 }
               (void) SetMSLAttributes(msl_info,keyword,value);
@@ -6110,7 +6114,8 @@
                     opac = (int)(QuantumRange * ((float)opac/100));
                   } else
                     opac = StringToLong( value );
-                  (void) SetImageAlpha( msl_info->image[n], (Quantum) opac );
+                  (void) SetImageAlpha( msl_info->image[n], (Quantum) opac,
+                    &exception);
                   break;
               }
               (void) SetMSLAttributes(msl_info,keyword,value);
@@ -7139,7 +7144,7 @@
                 }
               }
             }
-          (void) TextureImage(msl_info->image[n],texture_image);
+          (void) TextureImage(msl_info->image[n],texture_image,&exception);
           texture_image=DestroyImage(texture_image);
           break;
         }
@@ -7185,8 +7190,8 @@
           process image.
         */
         {
-          BilevelImage(msl_info->image[n],threshold);
-        break;
+          BilevelImage(msl_info->image[n],threshold,&exception);
+          break;
         }
       }
       else if (LocaleCompare((const char *) tag, "transparent") == 0)
diff --git a/coders/mtv.c b/coders/mtv.c
index 6a0ebe1..a60e102 100644
--- a/coders/mtv.c
+++ b/coders/mtv.c
@@ -367,7 +367,7 @@
       Allocate memory for pixels.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     pixels=(unsigned char *) AcquireQuantumMemory((size_t) image->columns,
       3UL*sizeof(*pixels));
     if (pixels == (unsigned char *) NULL)
diff --git a/coders/otb.c b/coders/otb.c
index 6985426..9c7ef2d 100644
--- a/coders/otb.c
+++ b/coders/otb.c
@@ -334,7 +334,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Convert image to a bi-level image.
   */
diff --git a/coders/palm.c b/coders/palm.c
index 28082bc..9735b58 100644
--- a/coders/palm.c
+++ b/coders/palm.c
@@ -734,16 +734,16 @@
   do
   {
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     count=GetNumberColors(image,NULL,exception);
     for (bits_per_pixel=1;  (one << bits_per_pixel) < count; bits_per_pixel*=2) ;
     if (image_info->depth > 100)
       bits_per_pixel=image_info->depth-100;
     if (bits_per_pixel < 16)
-      (void) TransformImageColorspace(image,image->colorspace);
+      (void) TransformImageColorspace(image,image->colorspace,exception);
     if (bits_per_pixel < 8)
       {
-        (void) TransformImageColorspace(image,GRAYColorspace);
+        (void) TransformImageColorspace(image,GRAYColorspace,exception);
         (void) SetImageType(image,PaletteType,exception);
         (void) SortColormapByIntensity(image,exception);
       }
@@ -817,7 +817,7 @@
           affinity_image=ConstituteImage(256,1,"RGB",CharPixel,&PalmPalette,
             exception);
           (void) TransformImageColorspace(affinity_image,
-            affinity_image->colorspace);
+            affinity_image->colorspace,exception);
           (void) RemapImage(quantize_info,image,affinity_image,exception);
           for (y=0; y < (ssize_t) image->rows; y++)
           {
diff --git a/coders/pattern.c b/coders/pattern.c
index 5101404..f9dd536 100644
--- a/coders/pattern.c
+++ b/coders/pattern.c
@@ -991,7 +991,7 @@
       image=AcquireImage(blob_info,exception);
       image->background_color=pattern_image->background_color;
       (void) SetImageBackgroundColor(image);
-      (void) TextureImage(image,pattern_image);
+      (void) TextureImage(image,pattern_image,exception);
       pattern_image=DestroyImage(pattern_image);
     }
   blob_info=DestroyImageInfo(blob_info);
diff --git a/coders/pcd.c b/coders/pcd.c
index af0df4f..bcf7126 100644
--- a/coders/pcd.c
+++ b/coders/pcd.c
@@ -943,7 +943,7 @@
 */
 
 static MagickBooleanType WritePCDTile(Image *image,const char *page_geometry,
-  const char *tile_geometry)
+  const char *tile_geometry,ExceptionInfo *exception)
 {
   GeometryInfo
     geometry_info;
@@ -1012,9 +1012,9 @@
       tile_image=DestroyImage(tile_image);
       tile_image=bordered_image;
     }
-  (void) TransformImage(&tile_image,(char *) NULL,tile_geometry);
+  (void) TransformImage(&tile_image,(char *) NULL,tile_geometry,exception);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(tile_image,YCCColorspace);
+    (void) TransformImageColorspace(tile_image,YCCColorspace,exception);
   downsample_image=ResizeImage(tile_image,tile_image->columns/2,
     tile_image->rows/2,TriangleFilter,1.0,&image->exception);
   if (downsample_image == (Image *) NULL)
@@ -1103,7 +1103,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(pcd_image,RGBColorspace);
+    (void) TransformImageColorspace(pcd_image,RGBColorspace,exception);
   /*
     Write PCD image header.
   */
@@ -1140,9 +1140,9 @@
   /*
     Write PCD tiles.
   */
-  status=WritePCDTile(pcd_image,"768x512>","192x128");
-  status=WritePCDTile(pcd_image,"768x512>","384x256");
-  status=WritePCDTile(pcd_image,"768x512>","768x512");
+  status=WritePCDTile(pcd_image,"768x512>","192x128",exception);
+  status=WritePCDTile(pcd_image,"768x512>","384x256",exception);
+  status=WritePCDTile(pcd_image,"768x512>","768x512",exception);
   (void) CloseBlob(pcd_image);
   if (pcd_image != image)
     pcd_image=DestroyImage(pcd_image);
diff --git a/coders/pcl.c b/coders/pcl.c
index 7f9c607..4386e29 100644
--- a/coders/pcl.c
+++ b/coders/pcl.c
@@ -722,7 +722,7 @@
   do
   {
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     /*
       Initialize the printer.
     */
diff --git a/coders/pcx.c b/coders/pcx.c
index 11e7d34..14b4fb8 100644
--- a/coders/pcx.c
+++ b/coders/pcx.c
@@ -880,7 +880,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   page_table=(MagickOffsetType *) NULL;
   if ((LocaleCompare(image_info->magick,"DCX") == 0) ||
       ((GetNextImageInList(image) != (Image *) NULL) &&
diff --git a/coders/pdb.c b/coders/pdb.c
index 6202bc1..a014d1c 100644
--- a/coders/pdb.c
+++ b/coders/pdb.c
@@ -744,7 +744,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
 
   if (image -> colors <= 2  ||  GetImageType( image, exception ) == BilevelType) { /* TS */
     bits_per_pixel = 1;
@@ -819,7 +819,7 @@
   if (scanline == (unsigned char *) NULL)
     ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Convert to GRAY raster scanline.
   */
diff --git a/coders/pdf.c b/coders/pdf.c
index 0a86318..db9499b 100644
--- a/coders/pdf.c
+++ b/coders/pdf.c
@@ -1256,7 +1256,7 @@
     if (compression == JPEG2000Compression)
       {
         if (IsRGBColorspace(image->colorspace) == MagickFalse)
-          (void) TransformImageColorspace(image,RGBColorspace);
+          (void) TransformImageColorspace(image,RGBColorspace,exception);
       }
     /*
       Scale relative to dots-per-inch.
diff --git a/coders/pict.c b/coders/pict.c
index 1b09737..eb3721e 100644
--- a/coders/pict.c
+++ b/coders/pict.c
@@ -1240,7 +1240,7 @@
               if ((code == 0x9a) || (code == 0x9b) ||
                   ((bytes_per_line & 0x8000) != 0))
                 (void) CompositeImage(image,CopyCompositeOp,tile_image,
-                  destination.left,destination.top);
+                  destination.left,destination.top,exception);
             tile_image=DestroyImage(tile_image);
             break;
           }
@@ -1384,9 +1384,10 @@
           MagickMax(image->columns,tile_image->columns),
           MagickMax(image->rows,tile_image->rows),exception);
         if (IsRGBColorspace(image->colorspace) == MagickFalse)
-          (void) TransformImageColorspace(image,tile_image->colorspace);
+          (void) TransformImageColorspace(image,tile_image->colorspace,
+            exception);
         (void) CompositeImage(image,CopyCompositeOp,tile_image,frame.left,
-          frame.right);
+          frame.right,exception);
         image->compression=tile_image->compression;
         tile_image=DestroyImage(tile_image);
         continue;
@@ -1601,7 +1602,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Initialize image info.
   */
diff --git a/coders/png.c b/coders/png.c
index b863d54..289d60a 100644
--- a/coders/png.c
+++ b/coders/png.c
@@ -7724,7 +7724,7 @@
     }
 
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
 
   /*
     Sometimes we get PseudoClass images whose RGB values don't match
@@ -10057,7 +10057,7 @@
     {
       /* Add an opaque matte channel */
       image->matte = MagickTrue;
-      (void) SetImageAlpha(image,OpaqueAlpha);
+      (void) SetImageAlpha(image,OpaqueAlpha,exception);
 
       if (logging != MagickFalse)
         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
@@ -11665,7 +11665,7 @@
 
       (void) CopyMagickString(jpeg_image->magick,"JPEG",MaxTextExtent);
       channel_mask=SetPixelChannelMask(jpeg_image,AlphaChannel);
-      status=SeparateImage(jpeg_image);
+      status=SeparateImage(jpeg_image,exception);
       (void) SetPixelChannelMap(jpeg_image,channel_mask);
       jpeg_image->matte=MagickFalse;
 
diff --git a/coders/pnm.c b/coders/pnm.c
index 483bb9b..ba155cc 100644
--- a/coders/pnm.c
+++ b/coders/pnm.c
@@ -1565,7 +1565,7 @@
     if (format != '7')
       {
         if (IsRGBColorspace(image->colorspace) == MagickFalse)
-          (void) TransformImageColorspace(image,RGBColorspace);
+          (void) TransformImageColorspace(image,RGBColorspace,exception);
         (void) FormatLocaleString(buffer,MaxTextExtent,"%.20g %.20g\n",
           (double) image->columns,(double) image->rows);
         (void) WriteBlobString(image,buffer);
diff --git a/coders/ps.c b/coders/ps.c
index 3ba4b38..4ec4d23 100644
--- a/coders/ps.c
+++ b/coders/ps.c
@@ -1427,7 +1427,7 @@
     */
     if ((IsRGBColorspace(image->colorspace) == MagickFalse) &&
         (image->colorspace != CMYKColorspace))
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     delta.x=DefaultResolution;
     delta.y=DefaultResolution;
     resolution.x=image->x_resolution;
diff --git a/coders/ps3.c b/coders/ps3.c
index 659f8e0..1514682 100644
--- a/coders/ps3.c
+++ b/coders/ps3.c
@@ -522,7 +522,7 @@
   if (mask_image == (Image *) NULL)
     ThrowWriterException(CoderError,image->exception.reason);
   channel_mask=SetPixelChannelMask(mask_image,AlphaChannel);
-  status=SeparateImage(mask_image);
+  status=SeparateImage(mask_image,exception);
   (void) SetPixelChannelMap(mask_image,channel_mask);
   if (status == MagickFalse)
     {
diff --git a/coders/psd.c b/coders/psd.c
index 5742e9e..1206660 100644
--- a/coders/psd.c
+++ b/coders/psd.c
@@ -2149,14 +2149,14 @@
           (image_info->colorspace != CMYKColorspace))
         {
           if (IsRGBColorspace(image->colorspace) == MagickFalse)
-            (void) TransformImageColorspace(image,RGBColorspace);
+            (void) TransformImageColorspace(image,RGBColorspace,exception);
           (void) WriteBlobMSBShort(image,(unsigned short)
             (image->storage_class == PseudoClass ? IndexedMode : RGBMode));
         }
       else
         {
           if (image->colorspace != CMYKColorspace)
-            (void) TransformImageColorspace(image,CMYKColorspace);
+            (void) TransformImageColorspace(image,CMYKColorspace,exception);
           (void) WriteBlobMSBShort(image,CMYKMode);
         }
     }
diff --git a/coders/rgb.c b/coders/rgb.c
index ff1c65f..e97a747 100644
--- a/coders/rgb.c
+++ b/coders/rgb.c
@@ -1127,7 +1127,7 @@
       Convert MIFF to RGB raster pixels.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     if ((LocaleCompare(image_info->magick,"RGBA") == 0) &&
         (image->matte == MagickFalse))
       (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
diff --git a/coders/sgi.c b/coders/sgi.c
index ed4bc26..90ba848 100644
--- a/coders/sgi.c
+++ b/coders/sgi.c
@@ -908,7 +908,7 @@
       Initialize SGI raster file header.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     (void) ResetMagickMemory(&iris_info,0,sizeof(iris_info));
     iris_info.magic=0x01DA;
     compression=image->compression;
diff --git a/coders/sun.c b/coders/sun.c
index b5cb539..673b5ad 100644
--- a/coders/sun.c
+++ b/coders/sun.c
@@ -762,7 +762,7 @@
       Initialize SUN raster file header.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     sun_info.magic=0x59a66a95;
     if ((image->columns != (unsigned int) image->columns) ||
         (image->rows != (unsigned int) image->rows))
diff --git a/coders/tga.c b/coders/tga.c
index 8187ec8..850b75e 100644
--- a/coders/tga.c
+++ b/coders/tga.c
@@ -680,7 +680,7 @@
   if ((image->columns > 65535L) || (image->rows > 65535L))
     ThrowWriterException(ImageError,"WidthOrHeightExceedsLimit");
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   targa_info.id_length=0;
   value=GetImageProperty(image,"comment",exception);
   if (value != (const char *) NULL)
diff --git a/coders/tiff.c b/coders/tiff.c
index 27a0eaf..2a8e17b 100644
--- a/coders/tiff.c
+++ b/coders/tiff.c
@@ -2745,7 +2745,7 @@
           else
             {
               if (IsRGBColorspace(image->colorspace) == MagickFalse)
-                (void) TransformImageColorspace(image,RGBColorspace);
+                (void) TransformImageColorspace(image,RGBColorspace,exception);
               photometric=PHOTOMETRIC_RGB;
             }
         (void) TIFFSetField(tiff,TIFFTAG_SAMPLESPERPIXEL,3);
@@ -3219,7 +3219,7 @@
         if (image->matte != MagickFalse)
           quantum_type=CMYKAQuantum;
         if (image->colorspace != CMYKColorspace)
-          (void) TransformImageColorspace(image,CMYKColorspace);
+          (void) TransformImageColorspace(image,CMYKColorspace,exception);
         for (y=0; y < (ssize_t) image->rows; y++)
         {
           register const Quantum
diff --git a/coders/tile.c b/coders/tile.c
index cd0e42b..fc7a1c7 100644
--- a/coders/tile.c
+++ b/coders/tile.c
@@ -125,7 +125,7 @@
       tile_image->tile_offset.x=0;
       tile_image->tile_offset.y=0;
     }
-  (void) TextureImage(image,tile_image);
+  (void) TextureImage(image,tile_image,exception);
   tile_image=DestroyImage(tile_image);
   return(GetFirstImageInList(image));
 }
diff --git a/coders/txt.c b/coders/txt.c
index 3f6cbdd..d86cadf 100644
--- a/coders/txt.c
+++ b/coders/txt.c
@@ -286,7 +286,7 @@
 
         progress_monitor=SetImageProgressMonitor(image,
           (MagickProgressMonitor) NULL,image->client_data);
-        (void) TextureImage(image,texture);
+        (void) TextureImage(image,texture,exception);
         (void) SetImageProgressMonitor(image,progress_monitor,
           image->client_data);
       }
@@ -321,7 +321,7 @@
 
       progress_monitor=SetImageProgressMonitor(image,
         (MagickProgressMonitor) NULL,image->client_data);
-      (void) TextureImage(image,texture);
+      (void) TextureImage(image,texture,exception);
       (void) SetImageProgressMonitor(image,progress_monitor,image->client_data);
     }
   (void) AnnotateImage(image,draw_info,exception);
diff --git a/coders/uil.c b/coders/uil.c
index 28003f3..3dc11fc 100644
--- a/coders/uil.c
+++ b/coders/uil.c
@@ -214,7 +214,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   transparent=MagickFalse;
   i=0;
   p=(const Quantum *) NULL;
diff --git a/coders/uyvy.c b/coders/uyvy.c
index f09d934..0716579 100644
--- a/coders/uyvy.c
+++ b/coders/uyvy.c
@@ -330,7 +330,7 @@
   uyvy_image=CloneImage(image,0,0,MagickTrue,exception);
   if (uyvy_image == (Image *) NULL)
     return(MagickFalse);
-  (void) TransformImageColorspace(uyvy_image,YCbCrColorspace);
+  (void) TransformImageColorspace(uyvy_image,YCbCrColorspace,exception);
   full=MagickFalse;
   (void) ResetMagickMemory(&pixel,0,sizeof(PixelInfo));
   for (y=0; y < (ssize_t) image->rows; y++)
diff --git a/coders/vicar.c b/coders/vicar.c
index 2e7bb74..b37213f 100644
--- a/coders/vicar.c
+++ b/coders/vicar.c
@@ -458,7 +458,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Write header.
   */
diff --git a/coders/viff.c b/coders/viff.c
index aaba9f6..0241ad0 100644
--- a/coders/viff.c
+++ b/coders/viff.c
@@ -975,7 +975,7 @@
       Initialize VIFF image structure.
     */
     if (IsRGBColorspace(image->colorspace) == MagickFalse)
-      (void) TransformImageColorspace(image,RGBColorspace);
+      (void) TransformImageColorspace(image,RGBColorspace,exception);
     if (IsImageGray(image,exception) != MagickFalse)
       (void) SetImageStorageClass(image,DirectClass,exception);
     viff_info.identifier=(char) 0xab;
diff --git a/coders/wbmp.c b/coders/wbmp.c
index 2f77d2f..89f4370 100644
--- a/coders/wbmp.c
+++ b/coders/wbmp.c
@@ -378,7 +378,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Convert image to a bi-level image.
   */
diff --git a/coders/xbm.c b/coders/xbm.c
index eed9831..c5ccffc 100644
--- a/coders/xbm.c
+++ b/coders/xbm.c
@@ -511,7 +511,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Write X bitmap header.
   */
diff --git a/coders/xcf.c b/coders/xcf.c
index e6caf55..6c5b890 100644
--- a/coders/xcf.c
+++ b/coders/xcf.c
@@ -683,7 +683,7 @@
 
       /* composite the tile onto the layer's image, and then destroy it */
       (void) CompositeImage(inLayerInfo->image,CopyCompositeOp,tile_image,
-        destLeft * TILE_WIDTH,destTop*TILE_HEIGHT);
+        destLeft * TILE_WIDTH,destTop*TILE_HEIGHT,exception);
       tile_image=DestroyImage(tile_image);
 
       /* adjust tile position */
@@ -1311,7 +1311,7 @@
           Composite the layer data onto the main image, dispose the layer.
         */
         (void) CompositeImage(image,OverCompositeOp,layer_info[0].image,
-          layer_info[0].offset_x,layer_info[0].offset_y);
+          layer_info[0].offset_x,layer_info[0].offset_y,exception);
         layer_info[0].image =DestroyImage( layer_info[0].image);
       }
     else
@@ -1347,7 +1347,7 @@
         (void) CompositeImage(image,CopyCompositeOp,
           layer_info[number_layers-1].image,
           layer_info[number_layers-1].offset_x,
-          layer_info[number_layers-1].offset_y);
+          layer_info[number_layers-1].offset_y,exception);
           layer_info[number_layers-1].image=DestroyImage(
             layer_info[number_layers-1].image);
 
diff --git a/coders/xpm.c b/coders/xpm.c
index f07adc3..4ac8721 100644
--- a/coders/xpm.c
+++ b/coders/xpm.c
@@ -632,7 +632,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   SetGeometry(image,&geometry);
   (void) ParseMetaGeometry(PiconGeometry,&geometry.x,&geometry.y,
     &geometry.width,&geometry.height);
@@ -879,7 +879,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   opacity=(-1);
   if (image->matte == MagickFalse)
     {
diff --git a/coders/xwd.c b/coders/xwd.c
index 38b21fb..b1be9aa 100644
--- a/coders/xwd.c
+++ b/coders/xwd.c
@@ -650,7 +650,7 @@
   if (status == MagickFalse)
     return(status);
   if (IsRGBColorspace(image->colorspace) == MagickFalse)
-    (void) TransformImageColorspace(image,RGBColorspace);
+    (void) TransformImageColorspace(image,RGBColorspace,exception);
   /*
     Initialize XWD file header.
   */
diff --git a/coders/ycbcr.c b/coders/ycbcr.c
index 9ff4db3..342f307 100644
--- a/coders/ycbcr.c
+++ b/coders/ycbcr.c
@@ -1015,7 +1015,7 @@
       Convert MIFF to YCbCr raster pixels.
     */
     if (image->colorspace != YCbCrColorspace)
-      (void) TransformImageColorspace(image,YCbCrColorspace);
+      (void) TransformImageColorspace(image,YCbCrColorspace,exception);
     if ((LocaleCompare(image_info->magick,"YCbCrA") == 0) &&
         (image->matte == MagickFalse))
       (void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
diff --git a/coders/yuv.c b/coders/yuv.c
index 331c028..ab67250 100644
--- a/coders/yuv.c
+++ b/coders/yuv.c
@@ -647,7 +647,7 @@
         (void) CloseBlob(image);
         return(MagickFalse);
       }
-    (void) TransformImageColorspace(yuv_image,YCbCrColorspace);
+    (void) TransformImageColorspace(yuv_image,YCbCrColorspace,exception);
     /*
       Downsample image.
     */
@@ -658,7 +658,7 @@
         (void) CloseBlob(image);
         return(MagickFalse);
       }
-    (void) TransformImageColorspace(chroma_image,YCbCrColorspace);
+    (void) TransformImageColorspace(chroma_image,YCbCrColorspace,exception);
     if (interlace == NoInterlace)
       {
         /*