Skip to content

dix: Work around non-premultiplied ARGB cursor data harder

Turns out some apps (e.g. the Civilization VI game) use non-premultiplied cursor data which doesn't have any pixels with 0 alpha but non-0 non-alpha, but can still result in visual artifacts.

This uses the method suggested by Kamil in check for pixels where any colour component value is larger than the alpha value, which isn't possible with premultiplied alpha.

There can still be non-premultiplied data which won't be caught by this, but that should result in slightly incorrect colours and/or blending at the worst, not wildly incorrect colours such as shown in the bug report below.

Bugzilla: Suggested-by: Kamil Paral

Merge request reports