git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commitda03aadab795477e3d6e57cedceecb15b2e73b0f
parent7620dae4a0
authorLucas Galante <[email protected]>
date2026-06-30 16:07
Use correct blend mode for scene rects based on alpha values

 scenefx/types/scene/wlr_scene.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/scenefx/types/scene/wlr_scene.c b/scenefx/types/scene/wlr_scene.c
index 51c90a5..900207c 100644
--- a/scenefx/types/scene/wlr_scene.c
+++ b/scenefx/types/scene/wlr_scene.c
@@ -2004,9 +2004,6 @@ static void scene_entry_render(struct render_list_entry *entry, const struct ren
 		break;
 	case WLR_SCENE_NODE_RECT:;
 		struct wlr_scene_rect *scene_rect = wlr_scene_rect_from_node(node);
-		if (scene_rect->color[3] == 0.0) {
-			break;
-		}
 		struct fx_corner_radii rect_corners = scene_rect->corners;
 
 		fx_corner_radii_transform(node_transform, &rect_corners);
@@ -2031,6 +2028,8 @@ static void scene_entry_render(struct render_list_entry *entry, const struct ren
 					.a = scene_rect->color[3],
 				},
 				.clip = &render_region,
+				.blend_mode = scene_rect->color[3] == 1.0f ?
+					WLR_RENDER_BLEND_MODE_NONE : WLR_RENDER_BLEND_MODE_PREMULTIPLIED,
 			},
 			.clipped_region = {
 				.area = rect_clipped_region_box,