https://bugs.winehq.org/show_bug.cgi?id=42740
--- Comment #5 from Alexandre Julliard julliard@winehq.org --- (In reply to Johannes from comment #4)
I adjusted the Wine-specific check to be applied to old Wine versions only.
Thanks!
Windows just ignores the alpha channel (or expects it to be 255), only taking the actual pixel value (zero/non-zero) into account. But Wine seems to ignore the entire mask no matter if the alpha channel is set to 0 or 255 for any of the mask pixels. I think Wine needs to use the mask no matter which bit depth it has, and probably also ignore the alpha channel of the mask.
We are using BitBlt to copy the mask to 1-bpp. The way it works is that pixel values are matched against the background color, which is 00ffffff by default, so an alpha of 255 is never going to match, and the mask will be all ones. If you set alpha to 0 always, it should work as expected.
I believe Windows behaves the same way. I've hacked OpenMPT to make it always take the Wine code path, and I see the white background on Windows too.
If you have a case where the behavior is different without an explicit Wine check, I'd be interested to try it.