diff --git a/OpenDreamClient/Rendering/DreamIcon.cs b/OpenDreamClient/Rendering/DreamIcon.cs index fc3be2d189..33c4f6b426 100644 --- a/OpenDreamClient/Rendering/DreamIcon.cs +++ b/OpenDreamClient/Rendering/DreamIcon.cs @@ -507,7 +507,7 @@ private IRenderTexture FullRenderTexture(DreamViewOverlay viewOverlay, DrawingHa //we can use the color matrix shader here, since we don't need to blend //also because blend mode is none, we don't need to clear var colorMatrix = iconMetaData.ColorMatrixToApply.Equals(ColorMatrix.Identity) - ? new ColorMatrix(iconMetaData.ColorToApply.WithAlpha(iconMetaData.AlphaToApply)) + ? new ColorMatrix(iconMetaData.ColorToApply.WithAlpha(iconMetaData.ColorToApply.A * iconMetaData.AlphaToApply)) : iconMetaData.ColorMatrixToApply; ShaderInstance colorShader = DreamViewOverlay.ColorInstance.Duplicate(); diff --git a/OpenDreamClient/Rendering/DreamViewOverlay.cs b/OpenDreamClient/Rendering/DreamViewOverlay.cs index ead729a933..ca16be8156 100644 --- a/OpenDreamClient/Rendering/DreamViewOverlay.cs +++ b/OpenDreamClient/Rendering/DreamViewOverlay.cs @@ -403,9 +403,10 @@ private void ClearRenderTarget(IRenderTexture target, DrawingHandleWorld handle, ColorMatrix colorMatrix; if (ignoreColor) colorMatrix = ColorMatrix.Identity; - else if (iconMetaData.ColorMatrixToApply.Equals(ColorMatrix.Identity)) - colorMatrix = new ColorMatrix(iconMetaData.ColorToApply.WithAlpha(iconMetaData.AlphaToApply)); - else + else if (iconMetaData.ColorMatrixToApply.Equals(ColorMatrix.Identity)) { + float blendedAlpha = iconMetaData.ColorToApply.A * iconMetaData.AlphaToApply; + colorMatrix = new ColorMatrix(iconMetaData.ColorToApply.WithAlpha(blendedAlpha)); + } else colorMatrix = iconMetaData.ColorMatrixToApply; // We can use no shader if everything is default