diff --git a/coders/caption.c b/coders/caption.c
index bcae0d6..ce62c48 100644
--- a/coders/caption.c
+++ b/coders/caption.c
@@ -179,11 +179,10 @@
         (void) status;
         width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);
         height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);
-        if ((width > image->columns) || (height > image->rows))
+        if ((width > image->columns) && (height > image->rows))
           break;
-        draw_info->pointsize*=2.0;
+        draw_info->pointsize++;
       }
-      draw_info->pointsize/=2.0;
       /*
         Scale text down to fit bounding box.
       */
@@ -201,11 +200,10 @@
         status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
         width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);
         height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);
-        if ((width > image->columns) || (height > image->rows))
+        if ((width <= image->columns) && (height <= image->rows))
           break;
-        draw_info->pointsize++;
+        draw_info->pointsize--;
       }
-      draw_info->pointsize--;
     }
   i=FormatMagickCaption(image,draw_info,MagickTrue,&metrics,&caption,exception);
   if (image->rows == 0)