diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 302c44f..f8129b3 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -1426,7 +1426,7 @@
 #define KuwaharaImageTag  "Kuwahara/Image"
 
   CacheView
-    *image_view,
+    *image_view[4],
     *kuwahara_view;
 
   Image
@@ -1438,6 +1438,9 @@
   MagickOffsetType
     progress;
 
+  register ssize_t
+    i;
+
   size_t
     width;
 
@@ -1468,7 +1471,8 @@
   status=MagickTrue;
   progress=0;
   width=GetOptimalKernelWidth1D(radius,sigma);
-  image_view=AcquireVirtualCacheView(image,exception);
+  for (i=0; i < 4; i++)
+    image_view[i]=AcquireVirtualCacheView(image,exception);
   kuwahara_view=AcquireAuthenticCacheView(kuwahara_image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   #pragma omp parallel for schedule(static,4) shared(progress,status) \
@@ -1493,6 +1497,54 @@
       }
     for (x=0; x < (ssize_t) image->columns; x++)
     {
+      const Quantum
+        *restrict p[4];
+
+      for (i=0; i < 4; i++)
+      { 
+        ssize_t
+          x_offset,
+          y_offset;
+
+        x_offset=x;
+        y_offset=y;
+        switch (i)
+        { 
+          case 0:
+          { 
+            x_offset=x-(ssize_t) width/2L;
+            y_offset=y-(ssize_t) width/2L;
+            break;
+          }
+          case 1:
+          { 
+            x_offset=x;
+            y_offset=y-(ssize_t) width/2L;
+            break;
+          }
+          case 2:
+          { 
+            x_offset=x-(ssize_t) width/2L;
+            y_offset=y;
+            break;
+          }
+          case 3:
+          { 
+            x_offset=x;
+            y_offset=y;
+            break;
+          }
+        }
+        p[i]=GetCacheViewVirtualPixels(image_view[i],x_offset,y_offset,
+          width,width,exception);
+        if (p[i] == (const Quantum *) NULL)
+          break;
+      }
+      if (i < 4)
+        {
+          status=MagickFalse;
+          break;
+        }
       q+=GetPixelChannels(kuwahara_image);
     }
     if (SyncCacheViewAuthenticPixels(kuwahara_view,exception) == MagickFalse)
@@ -1511,7 +1563,8 @@
       }
   }
   kuwahara_view=DestroyCacheView(kuwahara_view);
-  image_view=DestroyCacheView(image_view);
+  for (i=0; i < 4; i++)
+    image_view[i]=DestroyCacheView(image_view[i]);
   if (status == MagickFalse)
     kuwahara_image=DestroyImage(kuwahara_image);
   return(kuwahara_image);
