diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index e396ba4..3127dcd 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -344,14 +344,8 @@
         (ssize_t) ((width-j)/2L),width-j,width-j,exception);
       if (p == (const Quantum *) NULL)
         break;
-      center=(ssize_t) GetPixelChannels(image)*(width-j)*
-        ((width-j)/2L)+GetPixelChannels(image)*((width-j)/2L);
-      if (GetPixelMask(image,q) != 0)
-        {
-          q+=GetPixelChannels(blur_image);
-          r+=GetPixelChannels(edge_image);
-          continue;
-        }
+      center=(ssize_t) GetPixelChannels(image)*(width-j)*((width-j)/2L)+
+        GetPixelChannels(image)*((width-j)/2L);
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         MagickRealType
@@ -384,7 +378,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (blur_traits == UndefinedPixelTrait))
           continue;
-        if ((blur_traits & CopyPixelTrait) != 0)
+        if (((blur_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,q) != 0))
           {
             SetPixelChannel(blur_image,channel,p[center+i],q);
             continue;
@@ -672,14 +667,8 @@
         (ssize_t) ((width-j)/2L),width-j,width-j,exception);
       if (p == (const Quantum *) NULL)
         break;
-      center=(ssize_t) GetPixelChannels(image)*(width-j)*
-        ((width-j)/2L)+GetPixelChannels(image)*((width-j)/2);
-      if (GetPixelMask(sharp_image,q) != 0)
-        {
-          q+=GetPixelChannels(sharp_image);
-          r+=GetPixelChannels(edge_image);
-          continue;
-        }
+      center=(ssize_t) GetPixelChannels(image)*(width-j)*((width-j)/2L)+
+        GetPixelChannels(image)*((width-j)/2);
       for (i=0; i < (ssize_t) GetPixelChannels(sharp_image); i++)
       {
         MagickRealType
@@ -712,7 +701,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (sharp_traits == UndefinedPixelTrait))
           continue;
-        if ((sharp_traits & CopyPixelTrait) != 0)
+        if (((sharp_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,q) != 0))
           {
             SetPixelChannel(sharp_image,channel,p[center+i],q);
             continue;
@@ -984,12 +974,6 @@
       register ssize_t
         i;
 
-      if (GetPixelMask(image,p) != 0)
-        {
-          p+=GetPixelChannels(image);
-          q+=GetPixelChannels(blur_image);
-          continue;
-        }
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         MagickRealType
@@ -1019,7 +1003,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (blur_traits == UndefinedPixelTrait))
           continue;
-        if ((blur_traits & CopyPixelTrait) != 0)
+        if (((blur_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,p) != 0))
           {
             SetPixelChannel(blur_image,channel,p[center+i],q);
             continue;
@@ -1112,12 +1097,6 @@
       register ssize_t
         i;
 
-      if (GetPixelMask(blur_image,p) != 0)
-        {
-          p+=GetPixelChannels(blur_image);
-          q+=GetPixelChannels(blur_image);
-          continue;
-        }
       for (i=0; i < (ssize_t) GetPixelChannels(blur_image); i++)
       {
         MagickRealType
@@ -1147,7 +1126,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (blur_traits == UndefinedPixelTrait))
           continue;
-        if ((blur_traits & CopyPixelTrait) != 0)
+        if (((blur_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(blur_image,p) != 0))
           {
             SetPixelChannel(blur_image,channel,p[center+i],q);
             continue;
@@ -1360,12 +1340,6 @@
       register ssize_t
         i;
 
-      if (GetPixelMask(image,p) != 0)
-        {
-          p+=GetPixelChannels(image);
-          q+=GetPixelChannels(convolve_image);
-          continue;
-        }
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         MagickRealType
@@ -1398,7 +1372,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (convolve_traits == UndefinedPixelTrait))
           continue;
-        if ((convolve_traits & CopyPixelTrait) != 0)
+        if (((convolve_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,p) != 0))
           {
             SetPixelChannel(convolve_image,channel,p[center+i],q);
             continue;
@@ -2212,12 +2187,6 @@
       register ssize_t
         i;
 
-      if (GetPixelMask(image,p) != 0)
-        {
-          p+=GetPixelChannels(image);
-          q+=GetPixelChannels(blur_image);
-          continue;
-        }
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         MagickRealType
@@ -2247,7 +2216,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (blur_traits == UndefinedPixelTrait))
           continue;
-        if ((blur_traits & CopyPixelTrait) != 0)
+        if (((blur_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,p) != 0))
           {
             SetPixelChannel(blur_image,channel,p[i],q);
             continue;
@@ -3016,12 +2986,6 @@
             if (step >= n)
               step=n-1;
         }
-      if (GetPixelMask(image,p) != 0)
-        {
-	  p+=GetPixelChannels(image);
-	  q+=GetPixelChannels(blur_image);
-          continue;
-        }
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         MagickRealType
@@ -3047,7 +3011,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (blur_traits == UndefinedPixelTrait))
           continue;
-        if ((blur_traits & CopyPixelTrait) != 0)
+        if (((blur_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,p) != 0))
           {
             SetPixelChannel(blur_image,channel,p[i],q);
             continue;
@@ -3298,12 +3263,6 @@
       register ssize_t
         i;
 
-      if (GetPixelMask(image,p) != 0)
-        {
-          p+=GetPixelChannels(image);
-          q+=GetPixelChannels(blur_image);
-          continue;
-        }
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         MagickRealType
@@ -3337,7 +3296,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (blur_traits == UndefinedPixelTrait))
           continue;
-        if ((blur_traits & CopyPixelTrait) != 0)
+        if (((blur_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,p) != 0))
           {
             SetPixelChannel(blur_image,channel,p[center+i],q);
             continue;
@@ -3590,14 +3550,6 @@
                 shade=distance/sqrt((double) normal_distance);
             }
         }
-      if (GetPixelMask(image,pre) != 0)
-        {
-          pre+=GetPixelChannels(image);
-          center+=GetPixelChannels(image);
-          post+=GetPixelChannels(image);
-          q+=GetPixelChannels(shade_image);
-          continue;
-        }
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         PixelChannel
@@ -3613,7 +3565,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (shade_traits == UndefinedPixelTrait))
           continue;
-        if ((shade_traits & CopyPixelTrait) != 0)
+        if (((shade_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,pre) != 0))
           {
             SetPixelChannel(shade_image,channel,center[i],q);
             continue;
@@ -4009,12 +3962,6 @@
       register ssize_t
         i;
 
-      if (GetPixelMask(image,p) != 0)
-        {
-          p+=GetPixelChannels(image);
-          q+=GetPixelChannels(unsharp_image);
-          continue;
-        }
       for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
       {
         MagickRealType
@@ -4033,7 +3980,8 @@
         if ((traits == UndefinedPixelTrait) ||
             (unsharp_traits == UndefinedPixelTrait))
           continue;
-        if ((unsharp_traits & CopyPixelTrait) != 0)
+        if (((unsharp_traits & CopyPixelTrait) != 0) ||
+            (GetPixelMask(image,p) != 0))
           {
             SetPixelChannel(unsharp_image,channel,p[i],q);
             continue;