diff --git a/magick/threshold.c b/magick/threshold.c
index acfb3b2..8c4b8ec 100644
--- a/magick/threshold.c
+++ b/magick/threshold.c
@@ -1014,10 +1014,10 @@
   if ( map->levels == (ssize_t *)NULL )
     ThrowFatalException(ResourceLimitFatalError,"UnableToAcquireThresholdMap");
   { /* parse levels into integer array */
-    int i;
+    ssize_t i;
     char *p;
     for( i=0; i< (ssize_t) (map->width*map->height); i++) {
-      map->levels[i] = (int)strtol(content, &p, 10);
+      map->levels[i] = (ssize_t)strtol(content, &p, 10);
       if ( p == content ) {
         (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
           "XmlInvalidContent", "<level> too few values, map \"%s\"", map_id);
@@ -1466,7 +1466,7 @@
 #endif
 
   { /* Do the posterized ordered dithering of the image */
-    int
+    ssize_t
       d;
 
     /* d = number of psuedo-level divisions added between color levels */
@@ -1512,7 +1512,7 @@
       indexes=GetCacheViewAuthenticIndexQueue(image_view);
       for (x=0; x < (ssize_t) image->columns; x++)
       {
-        register int
+        register ssize_t
           threshold,
           t,
           l;
@@ -1535,28 +1535,28 @@
               Opacity is inverted so 'off' represents transparent.
         */
         if (levels.red) {
-          t = (int) (QuantumScale*q->red*(levels.red*d+1));
+          t = (ssize_t) (QuantumScale*q->red*(levels.red*d+1));
           l = t/d;  t = t-l*d;
           q->red=(Quantum) ((l+(t >= threshold))*QuantumRange/levels.red);
         }
         if (levels.green) {
-          t = (int) (QuantumScale*q->green*(levels.green*d+1));
+          t = (ssize_t) (QuantumScale*q->green*(levels.green*d+1));
           l = t/d;  t = t-l*d;
           q->green=(Quantum) ((l+(t >= threshold))*QuantumRange/levels.green);
         }
         if (levels.blue) {
-          t = (int) (QuantumScale*q->blue*(levels.blue*d+1));
+          t = (ssize_t) (QuantumScale*q->blue*(levels.blue*d+1));
           l = t/d;  t = t-l*d;
           q->blue=(Quantum) ((l+(t >= threshold))*QuantumRange/levels.blue);
         }
         if (levels.opacity) {
-          t = (int) ((1.0-QuantumScale*q->opacity)*(levels.opacity*d+1));
+          t = (ssize_t) ((1.0-QuantumScale*q->opacity)*(levels.opacity*d+1));
           l = t/d;  t = t-l*d;
           q->opacity=(Quantum) ((1.0-l-(t >= threshold))*QuantumRange/
             levels.opacity);
         }
         if (levels.index) {
-          t = (int) (QuantumScale*indexes[x]*(levels.index*d+1));
+          t = (ssize_t) (QuantumScale*indexes[x]*(levels.index*d+1));
           l = t/d;  t = t-l*d;
           indexes[x]=(IndexPacket) ((l+(t>=threshold))*QuantumRange/
             levels.index);