git.lucas.co / cce-ui
GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git

commit49cf7251748b9f2b1331207f59d3eadfc7b7eb4b
parenta9d0fc1867
authorLucas Galante <[email protected]>
date2026-06-30 22:41
Fix Backplate corner rounding under negative alpha/blur and prevent duplicate square background quad drawing

 src/widget/container/backplate.rs | 6 +++++-
 src/widget/mod.rs                 | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/widget/container/backplate.rs b/src/widget/container/backplate.rs
index 02ba8f2..0ab957d 100644
--- a/src/widget/container/backplate.rs
+++ b/src/widget/container/backplate.rs
@@ -170,7 +170,11 @@ impl Element for Backplate {
         let mut quads = Vec::new();
         let bg_color = self.color();
         let (wx, wy, ww, wh) = self.rect();
-        if bg_color[3] != 0.0 {
+        
+        let (r1, r2, r3, r4) = self.rounded_corners();
+        let has_rounded = r1 || r2 || r3 || r4;
+        
+        if bg_color[3] != 0.0 && !has_rounded {
             quads.push((wx, wy, ww, wh, bg_color));
         }
         for &child_ptr in &self.children {
diff --git a/src/widget/mod.rs b/src/widget/mod.rs
index 4df7aa2..3cafa77 100644
--- a/src/widget/mod.rs
+++ b/src/widget/mod.rs
@@ -436,7 +436,7 @@ pub trait Element {
             let (x, y, w, h) = self.rect();
             let radius = self.corner_radius();
             let c = self.color();
-            if c[3] > 0.0 {
+            if c[3].abs() > 0.001 {
                 quads.push((x, y, w, h, radius, c, (r1, r2, r3, r4)));
             }
         }