diff --git a/kitty/shaders.c b/kitty/shaders.c index 448a31071..bb04716a5 100644 --- a/kitty/shaders.c +++ b/kitty/shaders.c @@ -477,10 +477,11 @@ set_cell_uniforms(float current_inactive_text_alpha, bool force) { void blank_canvas(float background_opacity, color_type color) { -#define C(shift) (((GLfloat)((color >> shift) & 0xFF)) / 255.0f) - glClearColor(C(16), C(8), C(0), background_opacity); + // See https://github.com/glfw/glfw/issues/1538 for why we use pre-multiplied alpha +#define C(shift) ((((GLfloat)((color >> shift) & 0xFF)) / 255.0f) * background_opacity) + glClearColor(C(16), C(8), C(0), background_opacity); #undef C - glClear(GL_COLOR_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT); } bool