diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index 8c68473..44ab5ff 100644 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -130,6 +130,7 @@ Context2d::Context2d(Canvas *canvas) { state->fill = transparent; state->stroke = transparent; state->shadow = transparent_black; + state->patternQuality = CAIRO_FILTER_GOOD; } /* @@ -568,6 +569,7 @@ Context2d::DrawImage(const Arguments &args) { // Paint cairo_set_source_surface(ctx, src, dx, dy); + cairo_pattern_set_filter(cairo_get_source(ctx), context->state->patternQuality); cairo_paint_with_alpha(ctx, context->state->globalAlpha); cairo_restore(ctx); diff --git a/src/CanvasRenderingContext2d.h b/src/CanvasRenderingContext2d.h index 32e88d2..90b1e68 100644 --- a/src/CanvasRenderingContext2d.h +++ b/src/CanvasRenderingContext2d.h @@ -22,6 +22,7 @@ typedef struct { rgba_t fill; rgba_t stroke; + cairo_filter_t patternQuality; cairo_pattern_t *fillPattern; cairo_pattern_t *strokePattern; float globalAlpha;