gdiplus: Fix the non-trivial case in color_over.
authorVincent Povirk <vincent@codeweavers.com>
Sat, 17 Apr 2010 16:31:15 +0000 (11:31 -0500)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 19 Apr 2010 12:54:05 +0000 (14:54 +0200)
dlls/gdiplus/gdiplus_private.h

index 5ff71255b9da11f3cdecdd4ee540425ce4ca88bc..2313cd543e6ec17e186dde382704fa2740421f7b 100644 (file)
@@ -94,9 +94,9 @@ static inline ARGB color_over(ARGB bg, ARGB fg)
     if (bg_alpha == 0) return fg;
 
     a = bg_alpha + fg_alpha;
-    b = ((bg&0xff)*bg_alpha + (fg&0xff)*fg_alpha)*0xff/a;
-    g = (((bg>>8)&0xff)*bg_alpha + ((fg>>8)&0xff)*fg_alpha)*0xff/a;
-    r = (((bg>>16)&0xff)*bg_alpha + ((fg>>16)&0xff)*fg_alpha)*0xff/a;
+    b = ((bg&0xff)*bg_alpha + (fg&0xff)*fg_alpha)/a;
+    g = (((bg>>8)&0xff)*bg_alpha + ((fg>>8)&0xff)*fg_alpha)/a;
+    r = (((bg>>16)&0xff)*bg_alpha + ((fg>>16)&0xff)*fg_alpha)/a;
 
     return (a<<24)|(r<<16)|(g<<8)|b;
 }