--- a/src/rrd_graph.c
+++ b/src/rrd_graph.c
@@ -2049,7 +2049,7 @@ horizontal_log_grid(gdImagePtr gif, imag
     char     graph_label[100];
     gdPoint  polyPoints[4];
     int      styleMinor[2],styleMajor[2];
-    double   value, pixperstep, minstep;
+    double   value, pixperstep, minstep, yval;
 
     /* find grid spaceing */
     pixpex= (double)im->ysize / (log10(im->maxval) - log10(im->minval));
@@ -2118,7 +2118,14 @@ horizontal_log_grid(gdImagePtr gif, imag
 	    
 	    gdImageLine(gif, polyPoints[0].x,polyPoints[0].y,
 			polyPoints[1].x,polyPoints[0].y,gdStyled);
-	    sprintf(graph_label,"%3.0e",value * yloglab[majoridx][i]);
+	    yval = value * yloglab[majoridx][i];
+	    if (yval >= 100000) {
+		    sprintf(graph_label,"%3.0e", yval);
+	    } else {
+		    if (yval == 1) /* prints as 1e+00 */
+			yval = 0;
+		    sprintf(graph_label,"%5.0f", yval);
+	    }
 	    gdImageString(gif, SmallFont,
 			  (polyPoints[0].x - (strlen(graph_label) * 
 					      SmallFont->w)-7), 
