diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 864bfc0..f6156dc 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -828,8 +828,7 @@
     *kernel_info;
 
   Image
-    *blur_image,
-    *morphology_image;
+    *blur_image;
 
   assert(image != (const Image *) NULL);
   assert(image->signature == MagickSignature);
@@ -837,28 +836,14 @@
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
-  (void) FormatLocaleString(geometry,MaxTextExtent,"blur:%.20gx%.20g",radius,
-    sigma);
+  (void) FormatLocaleString(geometry,MaxTextExtent,
+    "blur:%.20gx%.20g;blur:%.20gx%.20g+90",radius,sigma,radius,sigma);
   kernel_info=AcquireKernelInfo(geometry);
   if (kernel_info == (KernelInfo *) NULL)
     ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
-  morphology_image=MorphologyImage(image,ConvolveMorphology,1,kernel_info,
+  blur_image=MorphologyImage(image,ConvolveMorphology,1,kernel_info,
     exception);
   kernel_info=DestroyKernelInfo(kernel_info);
-  if (morphology_image == (Image *) NULL)
-    return((Image *) NULL);
-  (void) FormatLocaleString(geometry,MaxTextExtent,"blur:%.20gx%.20g+90",radius,
-    sigma);
-  kernel_info=AcquireKernelInfo(geometry);
-  if (kernel_info == (KernelInfo *) NULL)
-    {
-      morphology_image=DestroyImage(morphology_image);
-      ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
-    }
-  blur_image=MorphologyImage(morphology_image,ConvolveMorphology,1,kernel_info,
-    exception);
-  morphology_image=DestroyImage(morphology_image);
-  kernel_info=DestroyKernelInfo(kernel_info);
   return(blur_image);
 }
 
