diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index bdb23a6..0e33a93 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -338,7 +338,7 @@
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(exception != (ExceptionInfo *) NULL);
assert(exception->signature == MagickSignature);
- noise_image=CloneImage(image,0,0,MagickTrue,exception);
+ noise_image=CloneImage(image,image->columns,image->rows,MagickTrue,exception);
if (noise_image == (Image *) NULL)
return((Image *) NULL);
if (SetImageStorageClass(noise_image,DirectClass,exception) == MagickFalse)
@@ -404,8 +404,11 @@
if ((traits == UndefinedPixelTrait) ||
(noise_traits == UndefinedPixelTrait))
continue;
- if ((noise_traits & UpdatePixelTrait) == 0)
- continue;
+ if ((noise_traits & CopyPixelTrait) != 0)
+ {
+ SetPixelChannel(noise_image,channel,p[i],q);
+ continue;
+ }
SetPixelChannel(noise_image,channel,ClampToQuantum(
GenerateDifferentialNoise(random_info[id],p[i],noise_type,attenuate)),
q);