- if (i->y > area.y1) {
- break;
- } else if (i->y > area.y0) {
- set_source_rgba (context, i->color);
- context->set_line_width (i->width);
- context->move_to (area.x0, i->y);
- context->line_to (area.x1, i->y);
- context->stroke ();
+
+ Rect self = item_to_window (Rect (0, i->y - (i->width/2.0), COORD_MAX, i->y + (i->width/2.0)));
+ boost::optional<Rect> intersect = self.intersection (area);
+
+ if (!intersect) {
+ continue;