diff --git a/src/renderers/webgl-fallback/WebGLBackend.js b/src/renderers/webgl-fallback/WebGLBackend.js index 438443399b7423..8f91e0ffcdc38e 100644 --- a/src/renderers/webgl-fallback/WebGLBackend.js +++ b/src/renderers/webgl-fallback/WebGLBackend.js @@ -441,6 +441,12 @@ class WebGLBackend extends Backend { const clearColor = descriptor.clearColorValue || this.getClearColor(); + // premultiply alpha + + clearColor.r *= clearColor.a; + clearColor.g *= clearColor.a; + clearColor.b *= clearColor.a; + if ( depth ) this.state.setDepthMask( true ); if ( descriptor.textures === null ) { diff --git a/src/renderers/webgpu/WebGPUBackend.js b/src/renderers/webgpu/WebGPUBackend.js index 0c864c4e3717eb..4e5d60ad969289 100644 --- a/src/renderers/webgpu/WebGPUBackend.js +++ b/src/renderers/webgpu/WebGPUBackend.js @@ -604,7 +604,19 @@ class WebGPUBackend extends Backend { const clearColor = this.getClearColor(); - clearValue = { r: clearColor.r, g: clearColor.g, b: clearColor.b, a: clearColor.a }; + if ( this.renderer.alpha === true ) { + + // premultiply alpha + + const a = clearColor.a; + + clearValue = { r: clearColor.r * a, g: clearColor.g * a, b: clearColor.b * a, a: a }; + + } else { + + clearValue = { r: clearColor.r, g: clearColor.g, b: clearColor.b, a: clearColor.a }; + + } }