diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc
index ba2b0b1..0b6c8dd 100644
--- a/src/CanvasRenderingContext2d.cc
+++ b/src/CanvasRenderingContext2d.cc
@@ -1042,9 +1042,6 @@ Context2d::FillRect(const Arguments &args) {
   cairo_t *ctx = context->getContext();
   cairo_new_path(ctx);
 
-  cairo_rectangle(ctx, x, y, width, height);
-  context->savePath();
-
   if (!context->hasShadow()) {
     cairo_rectangle(ctx, x, y, width, height);
     SET_SOURCE(context->state->fill);
@@ -1053,6 +1050,9 @@ Context2d::FillRect(const Arguments &args) {
   }
 
   cairo_save(ctx);
+  cairo_rectangle(ctx, x, y, width, height);
+  context->savePath();
+
   cairo_translate(
       ctx
     , context->state->shadowOffsetX