diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index bf3c7cc..864bfc0 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -1279,6 +1279,10 @@
 MagickExport Image *EmbossImage(const Image *image,const double radius,
   const double sigma,ExceptionInfo *exception)
 {
+  double
+    gamma,
+    normalize;
+
   Image
     *emboss_image;
 
@@ -1335,6 +1339,12 @@
     }
     k--;
   }
+  normalize=0.0;
+  for (i=0; i < (ssize_t) (kernel_info->width*kernel_info->height); i++)
+    normalize+=kernel_info->values[i];
+  gamma=PerceptibleReciprocal(normalize);
+  for (i=0; i < (ssize_t) (kernel_info->width*kernel_info->height); i++)
+    kernel_info->values[i]*=gamma;
   emboss_image=MorphologyImage(image,ConvolveMorphology,1,kernel_info,
     exception);
   kernel_info=DestroyKernelInfo(kernel_info);
@@ -3090,6 +3100,7 @@
   const double sigma,ExceptionInfo *exception)
 {
   double
+    gamma,
     normalize;
 
   Image
@@ -3147,13 +3158,13 @@
     }
   }
   kernel_info->values[i/2]=(double) ((-2.0)*normalize);
-  if (sigma < MagickEpsilon)
-    kernel_info->values[i/2]=1.0;
   normalize=0.0;
-  for (i=0; i < width*width; i++)
+  for (i=0; i < (ssize_t) (kernel_info->width*kernel_info->height); i++)
     normalize+=kernel_info->values[i];
-  kernel_info->values[i/2]+=1.0-normalize;
-  sharp_image=ConvolveImage(image,kernel_info,exception);
+  gamma=PerceptibleReciprocal(normalize);
+  for (i=0; i < (ssize_t) (kernel_info->width*kernel_info->height); i++)
+    kernel_info->values[i]*=gamma;
+  sharp_image=MorphologyImage(image,ConvolveMorphology,1,kernel_info,exception);
   kernel_info=DestroyKernelInfo(kernel_info);
   return(sharp_image);
 }