diff --git a/reactos/subsystems/win32/win32k/objects/brush.c b/reactos/subsystems/win32/win32k/objects/brush.c index 426a05774ad..11c28689b83 100644 --- a/reactos/subsystems/win32/win32k/objects/brush.c +++ b/reactos/subsystems/win32/win32k/objects/brush.c @@ -415,6 +415,26 @@ IntGdiCreateSolidBrush( ASSERT(BrushObject != NULL); BrushObject->flAttrs |= GDIBRUSH_IS_SOLID; + + if (((Color>>24) & 0xff)==0x10) + { + if (Color == 0x10ff0002) + Color = 0xFF; + else if ((Color & 0xff) !=0) + Color = Color & 0xFFFFFF; + else if ((Color & 0xff) ==0x00) + Color = ((Color>>16) & 0x0000ff) | ((Color<<16) & 0xff0000) | (Color & 0x00ff00); + else if ((Color & 0xff) ==0x01) + Color = ((Color>>16) & 0x0000ff) | ((Color<<16) & 0xff0000) | (Color & 0x00ff00); + } + + + if (((Color>>24) & 0xff)==0xff) + { + Color = ((Color>>16) & 0x0000ff) | ((Color<<16) & 0xff0000) | (Color & 0x00ff00); + } + + BrushObject->BrushAttr.lbColor = Color & 0xFFFFFF; /* FIXME: Fill in the rest of fields!!! */