-
- for (Points::const_iterator i = _points.begin(); i != _points.end(); ++i) {
-
- if (done_first) {
-
- Duple c1 = item_to_window (Duple (cp1->x, cp1->y));
- Duple c2 = item_to_window (Duple (cp2->x, cp2->y));
- Duple c3 = item_to_window (Duple (i->x, i->y));
-
- context->curve_to (c1.x, c1.y, c2.x, c2.y, c3.x, c3.y);
-
- cp1++;
- cp2++;
-
- } else {
-
- Duple c = item_to_window (Duple (i->x, i->y));
- context->move_to (c.x, c.y);
- done_first = true;
- }
+ Points::const_iterator p = _points.begin();
+ const double pixel_adjust = (_outline_width == 1.0 ? 0.5 : 0.0);
+
+ Duple c = item_to_window (Duple (p->x, p->y));
+ context->move_to (c.x + pixel_adjust, c.y + pixel_adjust);
+ ++p;
+
+ while (p != _points.end()) {
+
+ Duple c1 = item_to_window (Duple (cp1->x, cp1->y));
+ Duple c2 = item_to_window (Duple (cp2->x, cp2->y));
+
+ c = item_to_window (Duple (p->x, p->y));
+
+ context->curve_to (c1.x + pixel_adjust,
+ c1.y + pixel_adjust,
+ c2.x + pixel_adjust,
+ c2.y + pixel_adjust,
+ c.x + pixel_adjust,
+ c.y + pixel_adjust);
+
+ ++cp1;
+ ++cp2;
+ ++p;