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);