diff --git a/swaylock/render.c b/swaylock/render.c index 80377b2a..ea23d0d8 100644 --- a/swaylock/render.c +++ b/swaylock/render.c @@ -30,15 +30,16 @@ void render_frame(struct swaylock_surface *surface) { cairo_t *cairo = surface->current_buffer->cairo; cairo_identity_matrix(cairo); + cairo_save(cairo); + cairo_set_operator(cairo, CAIRO_OPERATOR_SOURCE); if (state->args.mode == BACKGROUND_MODE_SOLID_COLOR || !surface->image) { cairo_set_source_u32(cairo, state->args.color); - cairo_set_operator (cairo, CAIRO_OPERATOR_SOURCE); cairo_paint(cairo); - cairo_set_operator (cairo, CAIRO_OPERATOR_OVER); } else { render_background_image(cairo, surface->image, state->args.mode, buffer_width, buffer_height); } + cairo_restore(cairo); cairo_identity_matrix(cairo); int arc_radius = ARC_RADIUS * surface->scale;