diff --git a/MagickCore/accelerate.c b/MagickCore/accelerate.c
index 93f718d..eab0b31 100644
--- a/MagickCore/accelerate.c
+++ b/MagickCore/accelerate.c
@@ -295,7 +295,7 @@
     "      break;\n"
     "    }\n"
     "  }\n"
-    "  gamma=ClampReciprocal(gamma);\n"
+    "  gamma=MagickReciprocal(gamma);\n"
     "  const unsigned long index = y*columns+x;\n"
     "  output[index].x=ClampToQuantum(gamma*sum.x);\n"
     "  output[index].y=ClampToQuantum(gamma*sum.y);\n"
diff --git a/MagickCore/colorspace.c b/MagickCore/colorspace.c
index 36a8779..c558a82 100644
--- a/MagickCore/colorspace.c
+++ b/MagickCore/colorspace.c
@@ -642,7 +642,7 @@
       gamma=DisplayGamma;
       value=GetImageProperty(image,"gamma",exception);
       if (value != (const char *) NULL)
-        gamma=ClampReciprocal(StringToDouble(value,(char **) NULL));
+        gamma=MagickReciprocal(StringToDouble(value,(char **) NULL));
       film_gamma=FilmGamma;
       value=GetImageProperty(image,"film-gamma",exception);
       if (value != (const char *) NULL)
@@ -2150,7 +2150,7 @@
       gamma=DisplayGamma;
       value=GetImageProperty(image,"gamma",exception);
       if (value != (const char *) NULL)
-        gamma=ClampReciprocal(StringToDouble(value,(char **) NULL));
+        gamma=MagickReciprocal(StringToDouble(value,(char **) NULL));
       film_gamma=FilmGamma;
       value=GetImageProperty(image,"film-gamma",exception);
       if (value != (const char *) NULL)
diff --git a/MagickCore/compare.c b/MagickCore/compare.c
index d57c138..d906080 100644
--- a/MagickCore/compare.c
+++ b/MagickCore/compare.c
@@ -950,7 +950,7 @@
     channel=GetPixelChannelMapChannel(image,i);
     gamma=image_statistics[i].standard_deviation*
       reconstruct_statistics[channel].standard_deviation;
-    gamma=ClampReciprocal(gamma);
+    gamma=MagickReciprocal(gamma);
     distortion[i]=QuantumRange*gamma*distortion[i];
     distortion[CompositePixelChannel]+=distortion[i]*distortion[i];
   }
diff --git a/MagickCore/composite-private.h b/MagickCore/composite-private.h
index 5d2f16d..c0c9a7d 100644
--- a/MagickCore/composite-private.h
+++ b/MagickCore/composite-private.h
@@ -62,7 +62,7 @@
   Sa=QuantumScale*alpha;
   Da=QuantumScale*beta,
   gamma=Sa*(-Da)+Sa+Da;
-  gamma=ClampReciprocal(gamma);
+  gamma=MagickReciprocal(gamma);
   for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
   {
     PixelChannel
@@ -133,7 +133,7 @@
   Da=QuantumScale*beta,
   gamma=Sa*(-Da)+Sa+Da;
   composite->alpha=(MagickRealType) QuantumRange*gamma;
-  gamma=ClampReciprocal(gamma);
+  gamma=MagickReciprocal(gamma);
   composite->red=gamma*MagickOver_(p->red,alpha,q->red,beta);
   composite->green=gamma*MagickOver_(p->green,alpha,q->green,beta);
   composite->blue=gamma*MagickOver_(p->blue,alpha,q->blue,beta);
@@ -162,7 +162,7 @@
   Da=QuantumScale*beta;
   gamma=RoundToUnity(Sa+Da);  /* 'Plus' blending -- not 'Over' blending */
   composite->alpha=(MagickRealType) QuantumRange*gamma;
-  gamma=ClampReciprocal(gamma);
+  gamma=MagickReciprocal(gamma);
   composite->red=gamma*(Sa*p->red+Da*q->red);
   composite->green=gamma*(Sa*p->green+Da*q->green);
   composite->blue=gamma*(Sa*p->blue+Da*q->blue);
diff --git a/MagickCore/composite.c b/MagickCore/composite.c
index 7bf2f98..8f810a6 100644
--- a/MagickCore/composite.c
+++ b/MagickCore/composite.c
@@ -502,7 +502,7 @@
         */
         Sc=(MagickRealType) GetPixelChannel(composite_image,channel,p);
         Dc=(MagickRealType) q[i];
-        gamma=ClampReciprocal(alpha);
+        gamma=MagickReciprocal(alpha);
         q[i]=ClampToQuantum(gamma*(Sa*Sc-Sa*Da*Dc+Da*Dc));
       }
       p+=GetPixelChannels(composite_image);
@@ -1649,7 +1649,7 @@
           default:
             break;
         }
-        gamma=ClampReciprocal(alpha);
+        gamma=MagickReciprocal(alpha);
         pixel=Dc;
         switch (compose)
         {
diff --git a/MagickCore/distort.c b/MagickCore/distort.c
index 38aba06..96dc682 100644
--- a/MagickCore/distort.c
+++ b/MagickCore/distort.c
@@ -1798,28 +1798,28 @@
         s.x = (double) image->page.x;
         s.y = (double) image->page.y;
         scale=inverse[6]*s.x+inverse[7]*s.y+1.0;
-        scale=ClampReciprocal(scale);
+        scale=MagickReciprocal(scale);
         d.x = scale*(inverse[0]*s.x+inverse[1]*s.y+inverse[2]);
         d.y = scale*(inverse[3]*s.x+inverse[4]*s.y+inverse[5]);
         InitalBounds(d);
         s.x = (double) image->page.x+image->columns;
         s.y = (double) image->page.y;
         scale=inverse[6]*s.x+inverse[7]*s.y+1.0;
-        scale=ClampReciprocal(scale);
+        scale=MagickReciprocal(scale);
         d.x = scale*(inverse[0]*s.x+inverse[1]*s.y+inverse[2]);
         d.y = scale*(inverse[3]*s.x+inverse[4]*s.y+inverse[5]);
         ExpandBounds(d);
         s.x = (double) image->page.x;
         s.y = (double) image->page.y+image->rows;
         scale=inverse[6]*s.x+inverse[7]*s.y+1.0;
-        scale=ClampReciprocal(scale);
+        scale=MagickReciprocal(scale);
         d.x = scale*(inverse[0]*s.x+inverse[1]*s.y+inverse[2]);
         d.y = scale*(inverse[3]*s.x+inverse[4]*s.y+inverse[5]);
         ExpandBounds(d);
         s.x = (double) image->page.x+image->columns;
         s.y = (double) image->page.y+image->rows;
         scale=inverse[6]*s.x+inverse[7]*s.y+1.0;
-        scale=ClampReciprocal(scale);
+        scale=MagickReciprocal(scale);
         d.x = scale*(inverse[0]*s.x+inverse[1]*s.y+inverse[2]);
         d.y = scale*(inverse[3]*s.x+inverse[4]*s.y+inverse[5]);
         ExpandBounds(d);
diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index 9658e85..4b2b82b 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -3180,7 +3180,7 @@
       q.y=(double) y-gradient_vector->y1;
       length=sqrt(q.x*q.x+q.y*q.y);
       gamma=sqrt(p.x*p.x+p.y*p.y)*length;
-      gamma=ClampReciprocal(gamma);
+      gamma=MagickReciprocal(gamma);
       scale=p.x*q.x+p.y*q.y;
       offset=gamma*scale*length;
       return(offset);
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 623c38e..9b74f32 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -408,7 +408,7 @@
                 pixels+=GetPixelChannels(image);
               }
             }
-            gamma=ClampReciprocal(gamma);
+            gamma=MagickReciprocal(gamma);
             SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
             continue;
           }
@@ -426,7 +426,7 @@
             pixels+=GetPixelChannels(image);
           }
         }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       q+=GetPixelChannels(blur_image);
@@ -735,7 +735,7 @@
                 pixels+=GetPixelChannels(image);
               }
             }
-            gamma=ClampReciprocal(gamma);
+            gamma=MagickReciprocal(gamma);
             SetPixelChannel(sharp_image,channel,ClampToQuantum(gamma*pixel),q);
             continue;
           }
@@ -753,7 +753,7 @@
             pixels+=GetPixelChannels(image);
           }
         }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(sharp_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       q+=GetPixelChannels(sharp_image);
@@ -1051,7 +1051,7 @@
           k++;
           pixels+=GetPixelChannels(image);
         }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       p+=GetPixelChannels(image);
@@ -1181,7 +1181,7 @@
           k++;
           pixels+=GetPixelChannels(blur_image);
         }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       p+=GetPixelChannels(blur_image);
@@ -2060,7 +2060,7 @@
           gamma+=(*k)*alpha;
           k++;
         }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       p+=GetPixelChannels(image);
@@ -2843,7 +2843,7 @@
               pixel+=r[i];
               gamma++;
             }
-            gamma=ClampReciprocal(gamma);
+            gamma=MagickReciprocal(gamma);
             SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
             continue;
           }
@@ -2861,7 +2861,7 @@
           pixel+=GetPixelAlpha(image,r)*r[i];
           gamma+=GetPixelAlpha(image,r);
         }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       p+=GetPixelChannels(image);
@@ -3139,7 +3139,7 @@
                 SetPixelChannel(blur_image,channel,p[center+i],q);
                 continue;
               }
-            gamma=ClampReciprocal(gamma);
+            gamma=MagickReciprocal(gamma);
             SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
             continue;
           }
@@ -3165,7 +3165,7 @@
             SetPixelChannel(blur_image,channel,p[center+i],q);
             continue;
           }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(blur_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       p+=GetPixelChannels(image);
diff --git a/MagickCore/feature.c b/MagickCore/feature.c
index f814b80..863be65 100644
--- a/MagickCore/feature.c
+++ b/MagickCore/feature.c
@@ -572,7 +572,7 @@
         break;
       }
     }
-    normalize=ClampReciprocal(normalize);
+    normalize=MagickReciprocal(normalize);
     for (y=0; y < (ssize_t) number_grays; y++)
     {
       register ssize_t
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 0f88576..c0aea2c 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -2087,7 +2087,7 @@
   Sa=QuantumScale*alpha;
   Da=QuantumScale*beta,
   gamma=Sa*(-Da)+Sa+Da;
-  gamma=ClampReciprocal(gamma);
+  gamma=MagickReciprocal(gamma);
   for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
   {
     PixelChannel
diff --git a/MagickCore/magick-type.h b/MagickCore/magick-type.h
index 1459685..70614d9 100644
--- a/MagickCore/magick-type.h
+++ b/MagickCore/magick-type.h
@@ -37,7 +37,7 @@
 #endif
 
 #if (MAGICKCORE_QUANTUM_DEPTH == 8)
-#define MagickEpsilon  ((MagickRealType) 1.0e-6)
+#define MagickEpsilon  ((MagickRealType) 1.0e-7)
 #define MaxColormapSize  256UL
 #define MaxMap  255UL
 
@@ -56,7 +56,7 @@
 #define QuantumFormat  "%u"
 #endif
 #elif (MAGICKCORE_QUANTUM_DEPTH == 16)
-#define MagickEpsilon  ((MagickRealType) 1.0e-10)
+#define MagickEpsilon  ((MagickRealType) 1.0e-16)
 #define MaxColormapSize  65536UL
 #define MaxMap  65535UL
 
@@ -75,7 +75,7 @@
 #define QuantumFormat  "%u"
 #endif
 #elif (MAGICKCORE_QUANTUM_DEPTH == 32)
-#define MagickEpsilon  ((MagickRealType) 1.0e-10)
+#define MagickEpsilon  ((MagickRealType) 1.0e-16)
 #define MaxColormapSize  65536UL
 #define MaxMap  65535UL
 
@@ -90,7 +90,7 @@
 #define QuantumFormat  "%u"
 #endif
 #elif (MAGICKCORE_QUANTUM_DEPTH == 64) && defined(MAGICKCORE_HAVE_LONG_DOUBLE_WIDER)
-#define MagickEpsilon  ((MagickRealType) 1.0e-10)
+#define MagickEpsilon  ((MagickRealType) 1.0e-16)
 #define MaxColormapSize  65536UL
 #define MaxMap  65535UL
 
diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c
index 61b3cd9..ff1ef03 100644
--- a/MagickCore/morphology.c
+++ b/MagickCore/morphology.c
@@ -4270,7 +4270,7 @@
 
   curr_kernel = (KernelInfo *) kernel;
   bias=0.0;
-  compose = (ssize_t)UndefinedCompositeOp;  /* use default for method */
+  compose = UndefinedCompositeOp;  /* use default for method */
 
   /* Apply Convolve/Correlate Normalization and Scaling Factors.
    * This is done BEFORE the ShowKernelInfo() function is called so that
@@ -4610,7 +4610,7 @@
     args.sigma = 0.0;
 
   /* Scale/Normalize the input kernel */
-  ScaleKernelInfo(kernel, args.rho, flags);
+  ScaleKernelInfo(kernel, args.rho, (GeometryFlags) flags);
 
   /* Add Unity Kernel, for blending with original */
   if ( (flags & SigmaValue) != 0 )
diff --git a/MagickCore/pixel-private.h b/MagickCore/pixel-private.h
index 303da7a..f7d3e46 100644
--- a/MagickCore/pixel-private.h
+++ b/MagickCore/pixel-private.h
@@ -22,18 +22,10 @@
 extern "C" {
 #endif
 
-static inline MagickRealType ClampReciprocal(const MagickRealType alpha)
+static inline MagickRealType MagickReciprocal(const MagickRealType x)
 {
-  MagickRealType
-    beta;
-
-  /*
-    Reciprocal alpha: clamp to [MagickEpsilon,1], return reciprocal.
-  beta=(alpha > (MagickRealType) 1.0 ? (MagickRealType) 1.0 : alpha);
-  beta=(beta < MagickEpsilon ? MagickEpsilon : beta);
-  */
-beta=(fabs((double) alpha) < MagickEpsilon ? MagickEpsilon : alpha);
-  return((MagickRealType) 1.0/beta);
+  return((MagickRealType) 1.0/(((x) > (MagickRealType) 0.0 ? (x) : -(x)) <
+    MagickEpsilon ? MagickEpsilon : x));
 }
 
 #if defined(__cplusplus) || defined(c_plusplus)
diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c
index e4935bc..2eab864 100644
--- a/MagickCore/pixel.c
+++ b/MagickCore/pixel.c
@@ -4136,7 +4136,7 @@
         }
       for (i=0; i < 16; i++)
       {
-        gamma=ClampReciprocal(alpha[i]);
+        gamma=MagickReciprocal(alpha[i]);
         *pixel+=gamma*0.0625*pixels[i];
       }
       break;
@@ -4199,7 +4199,7 @@
       */
       gamma=1.0;
       if (channel != AlphaPixelChannel)
-        gamma=ClampReciprocal(cy[0]*(cx[0]*alpha[0]+cx[1]*alpha[1]+cx[2]*
+        gamma=MagickReciprocal(cy[0]*(cx[0]*alpha[0]+cx[1]*alpha[1]+cx[2]*
           alpha[2]+cx[3]*alpha[3])+cy[1]*(cx[0]*alpha[4]+cx[1]*alpha[5]+
           cx[2]*alpha[6]+cx[3]*alpha[7])+cy[2]*(cx[0]*alpha[8]+
           cx[1]*alpha[9]+cx[2]*alpha[10]+cx[3]*alpha[11])+cy[3]*(
@@ -4243,7 +4243,7 @@
       epsilon.y=1.0-delta.y;
       gamma=((epsilon.y*(epsilon.x*alpha[0]+delta.x*alpha[1])+delta.y*
         (epsilon.x*alpha[2]+delta.x*alpha[3])));
-      gamma=ClampReciprocal(gamma);
+      gamma=MagickReciprocal(gamma);
       *pixel=gamma*(epsilon.y*(epsilon.x*pixels[0]+delta.x*pixels[1])+delta.y*
         (epsilon.x*pixels[2]+delta.x*pixels[3]));
       break;
@@ -4350,7 +4350,7 @@
               */
               delta.y=1.0-delta.y;
               gamma=MeshInterpolate(&delta,alpha[2],alpha[3],alpha[0]);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               *pixel=gamma*MeshInterpolate(&delta,pixels[2],pixels[3],
                 pixels[0]);
             }
@@ -4361,7 +4361,7 @@
               */
               delta.x=1.0-delta.x;
               gamma=MeshInterpolate(&delta,alpha[1],alpha[0],alpha[3]);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               *pixel=gamma*MeshInterpolate(&delta,pixels[1],pixels[0],
                 pixels[3]);
             }
@@ -4377,7 +4377,7 @@
                 Top-left triangle (pixel: 0, diagonal: 1-2).
               */
               gamma=MeshInterpolate(&delta,alpha[0],alpha[1],alpha[2]);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               *pixel=gamma*MeshInterpolate(&delta,pixels[0],pixels[1],
                 pixels[2]);
             }
@@ -4389,7 +4389,7 @@
               delta.x=1.0-delta.x;
               delta.y=1.0-delta.y;
               gamma=MeshInterpolate(&delta,alpha[3],alpha[2],alpha[1]);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               *pixel=gamma*MeshInterpolate(&delta,pixels[3],pixels[2],
                 pixels[1]);
             }
@@ -4438,7 +4438,7 @@
         for (j=(-1); j < 3L; j++)
         {
           dx=CubicWeightingFunction(delta.x-(MagickRealType) j);
-          gamma=ClampReciprocal(alpha[n]);
+          gamma=MagickReciprocal(alpha[n]);
           *pixel+=gamma*dx*dy*pixels[n];
           n++;
         }
@@ -4565,7 +4565,7 @@
           alpha[j]=QuantumScale*GetPixelAlpha(source,p+j*
             GetPixelChannels(source));
           pixels[j]*=alpha[j];
-          gamma=ClampReciprocal(alpha[j]);
+          gamma=MagickReciprocal(alpha[j]);
           sum+=gamma*0.0625*pixels[j];
         }
         SetPixelChannel(destination,channel,ClampToQuantum(sum),pixel);
@@ -4641,7 +4641,7 @@
         */
         gamma=1.0;
         if ((traits & BlendPixelTrait) == 0)
-          gamma=ClampReciprocal(cy[0]*(cx[0]*alpha[0]+cx[1]*alpha[1]+cx[2]*
+          gamma=MagickReciprocal(cy[0]*(cx[0]*alpha[0]+cx[1]*alpha[1]+cx[2]*
             alpha[2]+cx[3]*alpha[3])+cy[1]*(cx[0]*alpha[4]+cx[1]*alpha[5]+
             cx[2]*alpha[6]+cx[3]*alpha[7])+cy[2]*(cx[0]*alpha[8]+
             cx[1]*alpha[9]+cx[2]*alpha[10]+cx[3]*alpha[11])+cy[3]*(
@@ -4687,7 +4687,7 @@
         if ((traits & BlendPixelTrait) == 0)
           {
             gamma=((epsilon.y*(epsilon.x+delta.x)+delta.y*(epsilon.x+delta.x)));
-            gamma=ClampReciprocal(gamma);
+            gamma=MagickReciprocal(gamma);
             SetPixelChannel(destination,channel,ClampToQuantum(gamma*(epsilon.y*
               (epsilon.x*pixels[0]+delta.x*pixels[1])+delta.y*(epsilon.x*
               pixels[2]+delta.x*pixels[3]))),pixel);
@@ -4705,7 +4705,7 @@
         pixels[3]*=alpha[3];
         gamma=((epsilon.y*(epsilon.x*alpha[0]+delta.x*alpha[1])+delta.y*
           (epsilon.x*alpha[2]+delta.x*alpha[3])));
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(destination,channel,ClampToQuantum(gamma*(epsilon.y*
           (epsilon.x*pixels[0]+delta.x*pixels[1])+delta.y*(epsilon.x*pixels[2]+
           delta.x*pixels[3]))),pixel);
@@ -4859,7 +4859,7 @@
                 */
                 delta.y=1.0-delta.y;
                 gamma=MeshInterpolate(&delta,alpha[2],alpha[3],alpha[0]);
-                gamma=ClampReciprocal(gamma);
+                gamma=MagickReciprocal(gamma);
                 SetPixelChannel(destination,channel,ClampToQuantum(gamma*
                   MeshInterpolate(&delta,pixels[2],pixels[3],pixels[0])),pixel);
               }
@@ -4870,7 +4870,7 @@
                 */
                 delta.x=1.0-delta.x;
                 gamma=MeshInterpolate(&delta,alpha[1],alpha[0],alpha[3]);
-                gamma=ClampReciprocal(gamma);
+                gamma=MagickReciprocal(gamma);
                 SetPixelChannel(destination,channel,ClampToQuantum(gamma*
                   MeshInterpolate(&delta,pixels[1],pixels[0],pixels[3])),pixel);
               }
@@ -4886,7 +4886,7 @@
                   Top-left triangle (pixel: 0, diagonal: 1-2).
                 */
                 gamma=MeshInterpolate(&delta,alpha[0],alpha[1],alpha[2]);
-                gamma=ClampReciprocal(gamma);
+                gamma=MagickReciprocal(gamma);
                 SetPixelChannel(destination,channel,ClampToQuantum(gamma*
                   MeshInterpolate(&delta,pixels[0],pixels[1],pixels[2])),pixel);
               }
@@ -4898,7 +4898,7 @@
                 delta.x=1.0-delta.x;
                 delta.y=1.0-delta.y;
                 gamma=MeshInterpolate(&delta,alpha[3],alpha[2],alpha[1]);
-                gamma=ClampReciprocal(gamma);
+                gamma=MagickReciprocal(gamma);
                 SetPixelChannel(destination,channel,ClampToQuantum(gamma*
                   MeshInterpolate(&delta,pixels[3],pixels[2],pixels[1])),pixel);
               }
@@ -4963,7 +4963,7 @@
           for (k=(-1); k < 3L; k++)
           {
             dx=CubicWeightingFunction(delta.x-(MagickRealType) k);
-            gamma=ClampReciprocal(alpha[n]);
+            gamma=MagickReciprocal(alpha[n]);
             sum+=gamma*dx*dy*pixels[n];
             n++;
           }
@@ -5109,7 +5109,7 @@
       pixel->alpha=0.0;
       for (i=0; i < 16L; i++)
       {
-        gamma=ClampReciprocal(alpha[i]);
+        gamma=MagickReciprocal(alpha[i]);
         pixel->red+=gamma*0.0625*pixels[i].red;
         pixel->green+=gamma*0.0625*pixels[i].green;
         pixel->blue+=gamma*0.0625*pixels[i].blue;
@@ -5251,7 +5251,7 @@
       epsilon.y=1.0-delta.y;
       gamma=((epsilon.y*(epsilon.x*alpha[0]+delta.x*alpha[1])+delta.y*
         (epsilon.x*alpha[2]+delta.x*alpha[3])));
-      gamma=ClampReciprocal(gamma);
+      gamma=MagickReciprocal(gamma);
       pixel->red=gamma*(epsilon.y*(epsilon.x*pixels[0].red+delta.x*
         pixels[1].red)+delta.y*(epsilon.x*pixels[2].red+delta.x*pixels[3].red));
       pixel->green=gamma*(epsilon.y*(epsilon.x*pixels[0].green+delta.x*
@@ -5265,7 +5265,7 @@
           pixels[1].black)+delta.y*(epsilon.x*pixels[2].black+delta.x*
           pixels[3].black));
       gamma=((epsilon.y*(epsilon.x+delta.x)+delta.y*(epsilon.x+delta.x)));
-      gamma=ClampReciprocal(gamma);
+      gamma=MagickReciprocal(gamma);
       pixel->alpha=(epsilon.y*(epsilon.x*pixels[0].alpha+delta.x*
         pixels[1].alpha)+delta.y*(epsilon.x*pixels[2].alpha+delta.x*
         pixels[3].alpha));
@@ -5350,7 +5350,7 @@
               */
               delta.y=1.0-delta.y;
               gamma=MeshInterpolate(&delta,alpha[2],alpha[3],alpha[0]);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               pixel->red=gamma*MeshInterpolate(&delta,pixels[2].red,
                 pixels[3].red,pixels[0].red);
               pixel->green=gamma*MeshInterpolate(&delta,pixels[2].green,
@@ -5371,7 +5371,7 @@
               */
               delta.x=1.0-delta.x;
               gamma=MeshInterpolate(&delta,alpha[1],alpha[0],alpha[3]);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               pixel->red=gamma*MeshInterpolate(&delta,pixels[1].red,
                 pixels[0].red,pixels[3].red);
               pixel->green=gamma*MeshInterpolate(&delta,pixels[1].green,
@@ -5397,7 +5397,7 @@
                 Top-left triangle (pixel: 0, diagonal: 1-2).
               */
               gamma=MeshInterpolate(&delta,alpha[0],alpha[1],alpha[2]);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               pixel->red=gamma*MeshInterpolate(&delta,pixels[0].red,
                 pixels[1].red,pixels[2].red);
               pixel->green=gamma*MeshInterpolate(&delta,pixels[0].green,
@@ -5419,7 +5419,7 @@
               delta.x=1.0-delta.x;
               delta.y=1.0-delta.y;
               gamma=MeshInterpolate(&delta,alpha[3],alpha[2],alpha[1]);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               pixel->red=gamma*MeshInterpolate(&delta,pixels[3].red,
                 pixels[2].red,pixels[1].red);
               pixel->green=gamma*MeshInterpolate(&delta,pixels[3].green,
@@ -5504,7 +5504,7 @@
         for (j=(-1); j < 3L; j++)
         {
           dx=CubicWeightingFunction(delta.x-(MagickRealType) j);
-          gamma=ClampReciprocal(alpha[n]);
+          gamma=MagickReciprocal(alpha[n]);
           pixel->red+=gamma*dx*dy*pixels[n].red;
           pixel->green+=gamma*dx*dy*pixels[n].green;
           pixel->blue+=gamma*dx*dy*pixels[n].blue;
diff --git a/MagickCore/profile.c b/MagickCore/profile.c
index ba2db23..5d21a15 100644
--- a/MagickCore/profile.c
+++ b/MagickCore/profile.c
@@ -1874,7 +1874,7 @@
         break;
       components=(ssize_t) ((int) ReadProfileLong(endian,q+4));
       number_bytes=(size_t) components*format_bytes[format];
-      if (number_bytes < components)
+      if ((ssize_t) number_bytes < components)
         break;  /* prevent overflow */
       if (number_bytes <= 4)
         p=q+8;
diff --git a/MagickCore/property.c b/MagickCore/property.c
index 2d45ea4..d0e56cc 100644
--- a/MagickCore/property.c
+++ b/MagickCore/property.c
@@ -45,6 +45,7 @@
 #include "MagickCore/attribute.h"
 #include "MagickCore/cache.h"
 #include "MagickCore/color.h"
+#include "MagickCore/color-private.h"
 #include "MagickCore/compare.h"
 #include "MagickCore/constitute.h"
 #include "MagickCore/draw.h"
@@ -57,7 +58,6 @@
 #include "MagickCore/geometry.h"
 #include "MagickCore/histogram.h"
 #include "MagickCore/image.h"
-#include "MagickCore/image.h"
 #include "MagickCore/layer.h"
 #include "MagickCore/locale-private.h"
 #include "MagickCore/list.h"
@@ -3463,6 +3463,26 @@
           if (colorspace < 0)
             break;
           image->colorspace=(ColorspaceType) colorspace;
+          image->rendering_intent=UndefinedIntent;
+          image->gamma=1.000f;
+          ResetMagickMemory(&image->chromaticity,0,sizeof(image->chromaticity));
+          if (IssRGBColorspace(image->colorspace) != MagickFalse)
+            {
+              image->rendering_intent=PerceptualIntent;
+              image->gamma=1.000f/2.200f;
+              image->chromaticity.red_primary.x=0.6400f;
+              image->chromaticity.red_primary.y=0.3300f;
+              image->chromaticity.red_primary.z=0.0300f;
+              image->chromaticity.green_primary.x=0.3000f;
+              image->chromaticity.green_primary.y=0.6000f;
+              image->chromaticity.green_primary.z=0.1000f;
+              image->chromaticity.blue_primary.x=0.1500f;
+              image->chromaticity.blue_primary.y=0.0600f;
+              image->chromaticity.blue_primary.z=0.7900f;
+              image->chromaticity.white_point.x=0.3127f;
+              image->chromaticity.white_point.y=0.3290f;
+              image->chromaticity.white_point.z=0.3583f;
+            }
           break;
         }
       if (LocaleCompare("compose",property) == 0)
diff --git a/MagickCore/quantize.c b/MagickCore/quantize.c
index cfc6876..f029a65 100644
--- a/MagickCore/quantize.c
+++ b/MagickCore/quantize.c
@@ -1252,7 +1252,7 @@
       */
       q=image->colormap+image->colors;
       alpha=(MagickRealType) ((MagickOffsetType) node_info->number_unique);
-      alpha=ClampReciprocal(alpha);
+      alpha=MagickReciprocal(alpha);
       if (cube_info->associate_alpha == MagickFalse)
         {
           q->red=(double) ClampToQuantum((MagickRealType)
@@ -1286,7 +1286,7 @@
                 gamma;
 
               gamma=(MagickRealType) (QuantumScale*q->alpha);
-              gamma=ClampReciprocal(gamma);
+              gamma=MagickReciprocal(gamma);
               q->red=(double) ClampToQuantum((MagickRealType)
                 (alpha*gamma*QuantumRange*node_info->total_color.red));
               q->green=(double) ClampToQuantum((MagickRealType)
diff --git a/MagickCore/quantum-import.c b/MagickCore/quantum-import.c
index 628c3bc..f9dafd1 100644
--- a/MagickCore/quantum-import.c
+++ b/MagickCore/quantum-import.c
@@ -3610,7 +3610,7 @@
             continue;
           }
         Sa=QuantumScale*GetPixelAlpha(image,q);
-        gamma=ClampReciprocal(Sa);
+        gamma=MagickReciprocal(Sa);
         for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
         {
           PixelChannel
diff --git a/MagickCore/resize.c b/MagickCore/resize.c
index 419d80e..2501e5a 100644
--- a/MagickCore/resize.c
+++ b/MagickCore/resize.c
@@ -2363,7 +2363,7 @@
           pixel+=alpha*p[k*GetPixelChannels(image)+i];
           gamma+=alpha;
         }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(resize_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       q+=GetPixelChannels(resize_image);
@@ -2579,7 +2579,7 @@
           pixel+=alpha*p[k*GetPixelChannels(image)+i];
           gamma+=alpha;
         }
-        gamma=ClampReciprocal(gamma);
+        gamma=MagickReciprocal(gamma);
         SetPixelChannel(resize_image,channel,ClampToQuantum(gamma*pixel),q);
       }
       q+=GetPixelChannels(resize_image);
@@ -3210,7 +3210,7 @@
               }
             alpha=QuantumScale*scanline[x*GetPixelChannels(image)+
               GetPixelChannelMapChannel(image,AlphaPixelChannel)];
-            gamma=ClampReciprocal(alpha);
+            gamma=MagickReciprocal(alpha);
             SetPixelChannel(scale_image,channel,ClampToQuantum(gamma*scanline[
               x*GetPixelChannels(image)+offset]),q);
           }
@@ -3312,7 +3312,7 @@
             }
           alpha=QuantumScale*scanline[x*GetPixelChannels(image)+
             GetPixelChannelMapChannel(image,AlphaPixelChannel)];
-          gamma=ClampReciprocal(alpha);
+          gamma=MagickReciprocal(alpha);
           SetPixelChannel(scale_image,channel,ClampToQuantum(gamma*
             scale_scanline[x*MaxPixelChannels+channel]),q);
         }
diff --git a/MagickCore/version.h b/MagickCore/version.h
index 525354a..f098af6 100644
--- a/MagickCore/version.h
+++ b/MagickCore/version.h
@@ -34,7 +34,7 @@
 #define MagickLibAddendum  "-0"
 #define MagickLibInterface  7
 #define MagickLibMinInterface  7
-#define MagickReleaseDate  "2012-06-02"
+#define MagickReleaseDate  "2012-06-03"
 #define MagickChangeDate   "20110801"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
diff --git a/NOTICE b/NOTICE
index aa1c1c2..312518c 100644
--- a/NOTICE
+++ b/NOTICE
@@ -4,6 +4,20 @@
 
 * * *
 
+ImageMagick was originally developed and distributed by E. I. du Pont de Nemours and Company:
+
+  Copyright 1999 E. I. du Pont de Nemours and Company
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files ("ImageMagick"), to deal in ImageMagick without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of ImageMagick, and to permit persons to whom the ImageMagick is furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in all copies or substantial portions of ImageMagick.
+
+  The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement.  In no event shall E. I. du Pont de Nemours and Company be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with ImageMagick or the use or other dealings in ImageMagick.
+
+  Except as contained in this notice, the name of the E. I. du Pont de Nemours and Company shall not be used in advertising or otherwise to promote the sale, use or other dealings in ImageMagick without prior written authorization from the E. I. du Pont de Nemours and Company.  
+
+* * *
+
 This copyright is limited to magick/utility.c/Base64Decode() and Base64Encode(), incorporated from the OpenSSH package:
 
   Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -62,3 +76,14 @@
   This copyright notice shall be included in all copies or substantial portions of Magick++. The copyright to Magick++ is retained by its author and shall not be subsumed or replaced by any other copyright.
                                                                             
   The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall Bob Friesenhahn be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with Magick++ or the use or other dealings in Magick++.
+
+* * *
+
+Many of the pattern images in coders/logo.c are derived from XFig, which is distributed under the following license:
+ 
+  | FIG : Facility for Interactive Generation of figures
+  | Copyright (c) 1985-1988 by Supoj Sutanthavibul
+  | Parts Copyright (c) 1989-2000 by Brian V. Smith
+  | Parts Copyright (c) 1991 by Paul King
+ 
+  Any party obtaining a copy of these files is granted, free of charge, a full and unrestricted irrevocable, world-wide, paid up, royalty-free, nonexclusive right and license to deal in this software and documentation files (the "Software"), including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons who receive copies from any such party to do so, with the only requirement being that this copyright notice remain intact.
diff --git a/PerlMagick/Makefile.PL b/PerlMagick/Makefile.PL
index 673e1c2..cc80f41 100644
--- a/PerlMagick/Makefile.PL
+++ b/PerlMagick/Makefile.PL
@@ -228,9 +228,9 @@
    # 'OPTIMIZE'	=> '',
 
    # Use same compiler as ImageMagick
-   'PERLMAINCC'	=> ' -fopenmp',
+   'PERLMAINCC'	=> 'gcc -fopenmp',
    'AR' => 'ar',
-   'LD' => '',
+   'LD' => 'gcc',
 
    # Set Perl installation prefix to ImageMagick installation prefix
 #   'PREFIX'	=> '/usr/local',
diff --git a/coders/pango.c b/coders/pango.c
index 3262b35..c23d19f 100644
--- a/coders/pango.c
+++ b/coders/pango.c
@@ -424,7 +424,7 @@
         Disassociate alpha.
       */
       gamma=1.0-QuantumScale*fill_color.alpha;
-      gamma=ClampReciprocal(gamma);
+      gamma=MagickReciprocal(gamma);
       fill_color.blue*=gamma;
       fill_color.green*=gamma;
       fill_color.red*=gamma;
diff --git a/coders/svg.c b/coders/svg.c
index bafc691..0c5c96c 100644
--- a/coders/svg.c
+++ b/coders/svg.c
@@ -2939,7 +2939,7 @@
                   gamma;
     
                 gamma=1.0-QuantumScale*fill_color.alpha;
-                gamma=ClampReciprocal(gamma);
+                gamma=MagickReciprocal(gamma);
                 fill_color.blue*=gamma;
                 fill_color.green*=gamma;
                 fill_color.red*=gamma;
diff --git a/config/ImageMagick.rdf b/config/ImageMagick.rdf
index 1f55ed9..f0854c6 100644
--- a/config/ImageMagick.rdf
+++ b/config/ImageMagick.rdf
@@ -5,7 +5,7 @@
     <name>ImageMagick</name>
     <shortdesc xml:lang="en">ImageMagick: convert, edit, and compose images.</shortdesc>
     <homepage rdf:resource="http://www.imagemagick.org/"/>
-    <created>2012-06-02</created>
+    <created>2012-06-03</created>
 
     <description xml:lang="en">
 ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 100) including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
@@ -57,7 +57,7 @@
     <release>
       <Version>
           <name>stable</name>
-          <created>2012-06-02</created>
+          <created>2012-06-03</created>
           <revision>7.0.0</revision>
           <patch-level>-0</patch-level>
       </Version>
diff --git a/config/configure.xml b/config/configure.xml
index b080b8f..75090d0 100644
--- a/config/configure.xml
+++ b/config/configure.xml
@@ -11,8 +11,8 @@
   <configure name="LIB_VERSION" value="0x700"/>
   <configure name="LIB_VERSION_NUMBER" value="7,0,0,0"/>
   <configure name="SVN_REVISION" value="8113" />
-  <configure name="RELEASE_DATE" value="2012-06-02"/>
-  <configure name="CONFIGURE" value="./configure "/>
+  <configure name="RELEASE_DATE" value="2012-06-03"/>
+  <configure name="CONFIGURE" value="./configure  'CC=gcc'"/>
   <configure name="PREFIX" value="/usr/local"/>
   <configure name="EXEC-PREFIX" value="/usr/local"/>
   <configure name="INCLUDE_PATH" value="/usr/local/include/ImageMagick"/>
@@ -32,7 +32,7 @@
   <configure name="LIBS" value="-lMagickCore -llcms2 -ltiff -lfreetype -ljasper -ljpeg -lpng15 -ldjvulibre -lfftw3 -lfontconfig -lXext -lXt -lSM -lICE -lX11 -llzma -lbz2 -pthread -lIlmImf -lImath -lHalf -lIex -lIlmThread -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0 -lxml2 -lgvc -lgraph -lcdt -lz -lm -lgomp -lpthread -lltdl"/>
   <configure name="CXX" value="g++"/>
   <configure name="CXXFLAGS" value="-g -O2 -pthread"/>
-  <configure name="DISTCHECK_CONFIG_FLAGS" value="--disable-deprecated --with-quantum-depth=16 --with-umem=no --with-autotrace=no --with-gslib=no --with-fontpath= --with-wmf=no --with-perl=no"/>
+  <configure name="DISTCHECK_CONFIG_FLAGS" value="'CC=gcc' --disable-deprecated --with-quantum-depth=16 --with-umem=no --with-autotrace=no --with-gslib=no --with-fontpath= --with-wmf=no --with-perl=no"/>
   <configure name="TARGET_CPU" value="x86_64"/>
   <configure name="TARGET_VENDOR" value="unknown"/>
   <configure name="TARGET_OS" value="linux-gnu"/>