|
@@ -690,10 +690,12 @@ Cursor _glfwCreateCursorX11(const GLFWimage* image, int xhot, int yhot)
|
|
|
|
|
|
for (i = 0; i < image->width * image->height; i++, target++, source += 4)
|
|
|
{
|
|
|
- *target = (source[3] << 24) |
|
|
|
- (source[0] << 16) |
|
|
|
- (source[1] << 8) |
|
|
|
- source[2];
|
|
|
+ unsigned char alpha = source[3];
|
|
|
+
|
|
|
+ *target = (alpha << 24) |
|
|
|
+ (_glfwMultiplyAlpha(alpha, source[0]) << 16) |
|
|
|
+ (_glfwMultiplyAlpha(alpha, source[1]) << 8) |
|
|
|
+ _glfwMultiplyAlpha(alpha, source[2]);
|
|
|
}
|
|
|
|
|
|
cursor = XcursorImageLoadCursor(_glfw.x11.display, native);
|