diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index ea9782d..8d6d611 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -1286,19 +1286,19 @@
 #endif
   for (y=0; y < (ssize_t) rows; y++)
   {
+    MagickRealType
+      v;
+
     register ssize_t
       i,
       x;
 
-    SignedQuantum
-      v;
-
     i=(2*y+1)+y*columns;
     if (polarity > 0)
       for (x=0; x < (ssize_t) columns; x++)
       {
-        v=(SignedQuantum) p[i];
-        if ((SignedQuantum) r[i] >= (v+ScaleCharToQuantum(2)))
+        v=(MagickRealType) p[i];
+        if ((MagickRealType) r[i] >= (v+ScaleCharToQuantum(2)))
           v+=ScaleCharToQuantum(1);
         q[i]=(Quantum) v;
         i++;
@@ -1306,8 +1306,8 @@
     else
       for (x=0; x < (ssize_t) columns; x++)
       {
-        v=(SignedQuantum) p[i];
-        if ((SignedQuantum) r[i] <= (v-ScaleCharToQuantum(2)))
+        v=(MagickRealType) p[i];
+        if ((MagickRealType) r[i] <= (v-ScaleCharToQuantum(2)))
           v-=ScaleCharToQuantum(1);
         q[i]=(Quantum) v;
         i++;
@@ -1327,16 +1327,16 @@
       i,
       x;
 
-    SignedQuantum
+    MagickRealType
       v;
 
     i=(2*y+1)+y*columns;
     if (polarity > 0)
       for (x=0; x < (ssize_t) columns; x++)
       {
-        v=(SignedQuantum) q[i];
-        if (((SignedQuantum) s[i] >= (v+ScaleCharToQuantum(2))) &&
-            ((SignedQuantum) r[i] > v))
+        v=(MagickRealType) q[i];
+        if (((MagickRealType) s[i] >= (v+ScaleCharToQuantum(2))) &&
+            ((MagickRealType) r[i] > v))
           v+=ScaleCharToQuantum(1);
         p[i]=(Quantum) v;
         i++;
@@ -1344,9 +1344,9 @@
     else
       for (x=0; x < (ssize_t) columns; x++)
       {
-        v=(SignedQuantum) q[i];
-        if (((SignedQuantum) s[i] <= (v-ScaleCharToQuantum(2))) &&
-            ((SignedQuantum) r[i] < v))
+        v=(MagickRealType) q[i];
+        if (((MagickRealType) s[i] <= (v-ScaleCharToQuantum(2))) &&
+            ((MagickRealType) r[i] < v))
           v-=ScaleCharToQuantum(1);
         p[i]=(Quantum) v;
         i++;
diff --git a/MagickCore/magick-type.h b/MagickCore/magick-type.h
index af00b34..a910c3e 100644
--- a/MagickCore/magick-type.h
+++ b/MagickCore/magick-type.h
@@ -36,11 +36,17 @@
 #  define MagickULLConstant(c)  (MagickSizeType) (c ## ULL)
 #endif
 
+#if !defined(MAGICKCORE_HAVE_DOUBLE_T)
+typedef double double_t;
+#endif
+#if !defined(MAGICKCORE_HAVE_FLOAT_T)
+typedef float float_t;
+#endif
+
 #if (MAGICKCORE_QUANTUM_DEPTH == 8)
 #define MaxColormapSize  256UL
 #define MaxMap  255UL
-typedef float MagickRealType;
-typedef ssize_t SignedQuantum;
+typedef float_t MagickRealType;
 
 #if defined(MAGICKCORE_HDRI_SUPPORT)
 typedef float Quantum;
@@ -54,8 +60,7 @@
 #elif (MAGICKCORE_QUANTUM_DEPTH == 16)
 #define MaxColormapSize  65536UL
 #define MaxMap  65535UL
-typedef float MagickRealType;
-typedef ssize_t SignedQuantum;
+typedef float_t MagickRealType;
 
 #if defined(MAGICKCORE_HDRI_SUPPORT)
 typedef float Quantum;
@@ -69,8 +74,7 @@
 #elif (MAGICKCORE_QUANTUM_DEPTH == 32)
 #define MaxColormapSize  65536UL
 #define MaxMap  65535UL
-typedef double MagickRealType;
-typedef double SignedQuantum;
+typedef double_t MagickRealType;
 
 #if defined(MAGICKCORE_HDRI_SUPPORT)
 typedef float Quantum;
@@ -84,8 +88,7 @@
 #elif (MAGICKCORE_QUANTUM_DEPTH == 64) && defined(MAGICKCORE_HAVE_LONG_DOUBLE_WIDER)
 #define MaxColormapSize  65536UL
 #define MaxMap  65535UL
-typedef long double MagickRealType;
-typedef double SignedQuantum;
+typedef double_t MagickRealType;
 
 typedef double Quantum;
 #define QuantumRange  18446744073709551615.0