diff -Naurp rrdtool-1.2.99908020600/src/rrd_graph.c rrdtool-1.2.99908020600.fix/src/rrd_graph.c --- rrdtool-1.2.99908020600/src/rrd_graph.c 2008-02-05 19:14:25.000000000 -0500 +++ rrdtool-1.2.99908020600.fix/src/rrd_graph.c 2008-04-30 21:12:13.000000000 -0400 @@ -3345,34 +3345,36 @@ int graph_paint( switch (im->gdes[i].gf) { case GF_HRULE: if (im->gdes[i].yrule >= im->minval - && im->gdes[i].yrule <= im->maxval) - cairo_save(im->cr); - if (im->gdes[i].dash) { - cairo_set_dash(im->cr, im->gdes[i].p_dashes, - im->gdes[i].ndash, im->gdes[i].offset); - } - gfx_line(im, - im->xorigin, ytr(im, im->gdes[i].yrule), - im->xorigin + im->xsize, ytr(im, - im->gdes[i].yrule), - 1.0, im->gdes[i].col); - cairo_stroke(im->cr); - cairo_restore(im->cr); + && im->gdes[i].yrule <= im->maxval) { + cairo_save(im->cr); + if (im->gdes[i].dash) { + cairo_set_dash(im->cr, im->gdes[i].p_dashes, + im->gdes[i].ndash, im->gdes[i].offset); + } + gfx_line(im, + im->xorigin, ytr(im, im->gdes[i].yrule), + im->xorigin + im->xsize, ytr(im, + im->gdes[i].yrule), + 1.0, im->gdes[i].col); + cairo_stroke(im->cr); + cairo_restore(im->cr); + } break; case GF_VRULE: if (im->gdes[i].xrule >= im->start - && im->gdes[i].xrule <= im->end) - cairo_save(im->cr); - if (im->gdes[i].dash) { - cairo_set_dash(im->cr, im->gdes[i].p_dashes, - im->gdes[i].ndash, im->gdes[i].offset); - } - gfx_line(im, - xtr(im, im->gdes[i].xrule), im->yorigin, - xtr(im, im->gdes[i].xrule), - im->yorigin - im->ysize, 1.0, im->gdes[i].col); - cairo_stroke(im->cr); - cairo_restore(im->cr); + && im->gdes[i].xrule <= im->end) { + cairo_save(im->cr); + if (im->gdes[i].dash) { + cairo_set_dash(im->cr, im->gdes[i].p_dashes, + im->gdes[i].ndash, im->gdes[i].offset); + } + gfx_line(im, + xtr(im, im->gdes[i].xrule), im->yorigin, + xtr(im, im->gdes[i].xrule), + im->yorigin - im->ysize, 1.0, im->gdes[i].col); + cairo_stroke(im->cr); + cairo_restore(im->cr); + } break; default: break;