- if (!_fill) {
- context->rectangle (plot.x0, plot.y0, plot.width(), plot.height());
- setup_outline_context (context);
- context->stroke ();
- }
-
- } else {
-
- if (_outline_what & LEFT) {
- context->move_to (plot.x0, plot.y0);
- context->line_to (plot.x0, plot.y1);
- }
-
- if (_outline_what & BOTTOM) {
- context->move_to (plot.x0, plot.y1);
- context->line_to (plot.x1, plot.y1);
- }
-
- if (_outline_what & RIGHT) {
- context->move_to (plot.x1, plot.y0);
- context->line_to (plot.x1, plot.y1);
- }
-
- if (_outline_what & TOP) {
- context->move_to (plot.x0, plot.y0);
- context->line_to (plot.x1, plot.y0);
- }
-
- setup_outline_context (context);
- context->stroke ();
+ context->save ();
+ context->rectangle (draw.x0, draw.y0, draw.width(), draw.height());
+ context->clip ();
+
+ if (_outline_what & LEFT) {
+ context->move_to (self.x0, self.y0);
+ context->line_to (self.x0, self.y1);
+ }
+
+ if (_outline_what & BOTTOM) {
+ context->move_to (self.x0, self.y1);
+ context->line_to (self.x1, self.y1);
+ }
+
+ if (_outline_what & RIGHT) {
+ context->move_to (self.x1, self.y0);
+ context->line_to (self.x1, self.y1);
+ }
+
+ if (_outline_what & TOP) {
+ context->move_to (self.x0, self.y0);
+ context->line_to (self.x1, self.y0);