This test exercises a bunch of alpha composition operations on text. The top-left rectangles are the source images and bottom-right rectangles are the destination images. Tests for fill text src 255, 0, 0, 255 src 255, 0, 0, 255 src 255, 0, 0, 255 src 0, 255, 0, 0 src 0, 255, 0, 1 src 255, 0, 0, 0 src 255, 0, 0, 127 src 255, 0, 0, 255 src 255, 0, 0, 127 src 127, 0, 0, 255 src 127, 0, 0, 127 src 255, 0, 0, 127 src 255, 127, 0, 32 src 255, 0, 0, 191 src 255, 0, 255, 191 dst 0, 255, 0, 255 dst 0, 255, 0, 0 dst 0, 255, 0, 1 dst 255, 0, 0, 255 dst 255, 0, 0, 255 dst 0, 255, 0, 255 dst 0, 255, 0, 127 dst 0, 255, 0, 127 dst 0, 255, 0, 255 dst 0, 127, 0, 127 dst 0, 127, 0, 255 dst 255, 0, 0, 63 dst 255, 63, 0, 63 dst 0, 255, 0, 127 dst 0, 255, 255, 127 source-over Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,1 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 254,1,0,255 actual: 0,1,254,255, composite type: source-over, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-over, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 170,84,0,190 actual: 0,85,169,191, composite type: source-over, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-over, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 127,128,0,255 actual: 0,128,127,255, composite type: source-over, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: source-over, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,0,0,255 actual: 0,0,127,255, composite type: source-over, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: source-over, source: 127,0,0,127, destination: 0,127,0,255 Unexpected composition! expected: 63,63,0,255 actual: 0,64,63,255, composite type: source-over, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: source-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,158 actual: 0,0,255,159, composite type: source-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: source-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: source-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,85,0,87 actual: 0,85,255,87, composite type: source-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: source-over, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 219,35,0,222 actual: 0,36,218,223, composite type: source-over, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: source-over, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 219,35,255,222 actual: 255,36,218,223, composite type: source-over, source: 255,0,255,191, destination: 0,255,255,127 source-in Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-in, source: 255,0,0,255, destination: 0,255,0,255 PASS PASS PASS PASS PASS Unexpected composition! expected: 255,0,0,64 actual: 0,0,255,63, composite type: source-in, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-in, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-in, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 128,0,0,127 actual: 0,0,126,127, composite type: source-in, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 126,0,0,127 actual: 0,0,126,127, composite type: source-in, source: 127,0,0,127, destination: 0,127,0,255 Unexpected composition! expected: 255,0,0,32 actual: 0,0,255,31, composite type: source-in, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,127,0,8 actual: 0,127,255,8, composite type: source-in, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,0,0,96 actual: 0,0,255,95, composite type: source-in, source: 255,0,0,191, destination: 0,255,0,127 PASS source-out Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,0,0,254 actual: 0,0,255,254, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,1 PASS PASS PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-out, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,64 actual: 0,0,255,64, composite type: source-out, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,128 actual: 0,0,255,128, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-out, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: source-out, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,0,0,128 actual: 0,0,127,128, composite type: source-out, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: source-out, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-out, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,96 actual: 0,0,255,96, composite type: source-out, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: source-out, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,132,0,25 actual: 0,127,255,24, composite type: source-out, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: source-out, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,96 actual: 0,0,255,96, composite type: source-out, source: 255,0,0,191, destination: 0,255,0,127 PASS source-atop Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-atop, source: 255,0,0,255, destination: 0,255,0,255 PASS PASS Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-atop, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-atop, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-atop, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 254,1,0,255 actual: 0,1,254,255, composite type: source-atop, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected composition! expected: 126,126,0,127 actual: 0,128,126,127, composite type: source-atop, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-atop, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 127,128,0,255 actual: 0,128,127,255, composite type: source-atop, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 128,0,0,127 actual: 0,0,126,127, composite type: source-atop, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 63,63,0,255 actual: 0,64,63,255, composite type: source-atop, source: 127,0,0,127, destination: 0,127,0,255 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: source-atop, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,63 actual: 0,0,255,63, composite type: source-atop, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: source-atop, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,68,0,63 actual: 0,68,255,63, composite type: source-atop, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 190,62,0,127 actual: 0,64,190,127, composite type: source-atop, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: source-atop, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 190,62,255,127 actual: 255,64,190,127, composite type: source-atop, source: 255,0,255,191, destination: 0,255,255,127 destination-over Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 254,1,0,255 actual: 0,1,254,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,1 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-over, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 84,170,0,190 actual: 0,169,85,191, composite type: destination-over, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 128,127,0,255 actual: 0,127,128,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-over, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: destination-over, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 63,63,0,255 actual: 0,63,64,255, composite type: destination-over, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: destination-over, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: destination-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,158 actual: 0,0,255,159, composite type: destination-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: destination-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: destination-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,82,0,87 actual: 0,79,255,87, composite type: destination-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: destination-over, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 109,145,0,222 actual: 0,145,109,223, composite type: destination-over, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: destination-over, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 109,145,255,222 actual: 255,145,109,223, composite type: destination-over, source: 255,0,255,191, destination: 0,255,255,127 destination-in PASS PASS PASS PASS PASS PASS PASS PASS PASS PASS PASS Unexpected composition! expected: 255,0,0,32 actual: 0,0,255,31, composite type: destination-in, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,95,0,8 actual: 0,63,255,8, composite type: destination-in, source: 255,127,0,32, destination: 255,63,0,63 PASS Unexpected composition! expected: 0,255,255,96 actual: 255,255,0,95, composite type: destination-in, source: 255,0,255,191, destination: 0,255,255,127 destination-out PASS PASS PASS Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-out, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-out, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-out, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,254 actual: 0,0,255,254, composite type: destination-out, source: 0,255,0,1, destination: 255,0,0,255 PASS PASS PASS PASS PASS PASS Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: destination-out, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,32 actual: 0,0,255,32, composite type: destination-out, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: destination-out, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,63,0,56 actual: 0,60,255,55, composite type: destination-out, source: 255,127,0,32, destination: 255,63,0,63 PASS Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: destination-out, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 0,255,255,32 actual: 255,255,0,32, composite type: destination-out, source: 255,0,255,191, destination: 0,255,255,127 destination-atop Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 254,1,0,255 actual: 0,1,254,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,1 PASS PASS PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-atop, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 126,126,0,127 actual: 0,126,128,127, composite type: destination-atop, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 128,127,0,255 actual: 0,127,128,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-atop, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: destination-atop, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 63,63,0,255 actual: 0,63,64,255, composite type: destination-atop, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: destination-atop, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-atop, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-atop, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: destination-atop, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,111,0,32 actual: 0,111,255,32, composite type: destination-atop, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: destination-atop, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 126,126,0,191 actual: 0,126,128,191, composite type: destination-atop, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 126,126,255,191 actual: 255,126,128,191, composite type: destination-atop, source: 255,0,255,191, destination: 0,255,255,127 lighter Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,255 Unexpected composition! expected: 255,255,0,255 actual: 0,255,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,1,0,255 actual: 0,1,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,1 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 255,1,0,255 actual: 0,1,255,255, composite type: lighter, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: lighter, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 127,127,0,254 actual: 0,127,127,254, composite type: lighter, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,127,0,255 actual: 0,127,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: lighter, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 127,255,0,255 actual: 0,255,127,255, composite type: lighter, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: lighter, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,63,0,255 actual: 0,63,127,255, composite type: lighter, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: lighter, source: 127,0,0,127, destination: 0,127,0,255 Unexpected composition! expected: 63,127,0,255 actual: 0,127,63,255, composite type: lighter, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: lighter, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: lighter, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,190 actual: 0,0,255,190, composite type: lighter, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: lighter, source: 255,127,0,32, destination: 255,63,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: lighter, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,85,0,95 actual: 0,83,255,95, composite type: lighter, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: lighter, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 191,127,0,255 actual: 0,127,191,255, composite type: lighter, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: lighter, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 191,127,255,255 actual: 255,127,191,255, composite type: lighter, source: 255,0,255,191, destination: 0,255,255,127 copy Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,1 PASS PASS PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: copy, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,0,0,255 actual: 0,0,127,255, composite type: copy, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: copy, source: 127,0,0,127, destination: 0,127,0,255 Unexpected composition! expected: 126,0,0,127 actual: 0,0,126,127, composite type: copy, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: copy, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,127,0,32 actual: 0,127,255,32, composite type: copy, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: copy, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,191 actual: 0,0,255,191, composite type: copy, source: 255,0,0,191, destination: 0,255,0,127 PASS xor Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,0,0,254 actual: 0,0,255,254, composite type: xor, source: 255,0,0,255, destination: 0,255,0,1 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,254 actual: 0,0,255,254, composite type: xor, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: xor, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 126,126,0,127 actual: 0,127,127,128, composite type: xor, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,128 actual: 0,0,255,128, composite type: xor, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: xor, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: xor, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,0,0,128 actual: 0,0,127,128, composite type: xor, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: xor, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: xor, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: xor, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,128, composite type: xor, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: xor, source: 255,127,0,32, destination: 255,63,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: xor, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,83,0,79 actual: 0,80,255,79, composite type: xor, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: xor, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 190,62,0,127 actual: 0,63,191,128, composite type: xor, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: xor, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 190,62,255,127 actual: 255,63,191,128, composite type: xor, source: 255,0,255,191, destination: 0,255,255,127 Tests for stroke text src 255, 0, 0, 255 src 255, 0, 0, 255 src 255, 0, 0, 255 src 0, 255, 0, 0 src 0, 255, 0, 1 src 255, 0, 0, 0 src 255, 0, 0, 127 src 255, 0, 0, 255 src 255, 0, 0, 127 src 127, 0, 0, 255 src 127, 0, 0, 127 src 255, 0, 0, 127 src 255, 127, 0, 32 src 255, 0, 0, 191 src 255, 0, 255, 191 dst 0, 255, 0, 255 dst 0, 255, 0, 0 dst 0, 255, 0, 1 dst 255, 0, 0, 255 dst 255, 0, 0, 255 dst 0, 255, 0, 255 dst 0, 255, 0, 127 dst 0, 255, 0, 127 dst 0, 255, 0, 255 dst 0, 127, 0, 127 dst 0, 127, 0, 255 dst 255, 0, 0, 63 dst 255, 63, 0, 63 dst 0, 255, 0, 127 dst 0, 255, 255, 127 source-over Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,1 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 254,1,0,255 actual: 0,1,254,255, composite type: source-over, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-over, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 170,84,0,190 actual: 0,85,169,191, composite type: source-over, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-over, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-over, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 127,128,0,255 actual: 0,128,127,255, composite type: source-over, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: source-over, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,0,0,255 actual: 0,0,127,255, composite type: source-over, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: source-over, source: 127,0,0,127, destination: 0,127,0,255 Unexpected composition! expected: 63,63,0,255 actual: 0,64,63,255, composite type: source-over, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: source-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,158 actual: 0,0,255,159, composite type: source-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: source-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: source-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,85,0,87 actual: 0,85,255,87, composite type: source-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: source-over, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 219,35,0,222 actual: 0,36,218,223, composite type: source-over, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: source-over, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 219,35,255,222 actual: 255,36,218,223, composite type: source-over, source: 255,0,255,191, destination: 0,255,255,127 source-in Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-in, source: 255,0,0,255, destination: 0,255,0,255 PASS PASS PASS PASS PASS Unexpected composition! expected: 255,0,0,64 actual: 0,0,255,63, composite type: source-in, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-in, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-in, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 128,0,0,127 actual: 0,0,126,127, composite type: source-in, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 126,0,0,127 actual: 0,0,126,127, composite type: source-in, source: 127,0,0,127, destination: 0,127,0,255 Unexpected composition! expected: 255,0,0,32 actual: 0,0,255,31, composite type: source-in, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,127,0,8 actual: 0,127,255,8, composite type: source-in, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,0,0,96 actual: 0,0,255,95, composite type: source-in, source: 255,0,0,191, destination: 0,255,0,127 PASS source-out Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,0,0,254 actual: 0,0,255,254, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,1 PASS PASS PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-out, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,64 actual: 0,0,255,64, composite type: source-out, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,128 actual: 0,0,255,128, composite type: source-out, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-out, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: source-out, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,0,0,128 actual: 0,0,127,128, composite type: source-out, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: source-out, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-out, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,96 actual: 0,0,255,96, composite type: source-out, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: source-out, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,132,0,25 actual: 0,127,255,24, composite type: source-out, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: source-out, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,96 actual: 0,0,255,96, composite type: source-out, source: 255,0,0,191, destination: 0,255,0,127 PASS source-atop Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-atop, source: 255,0,0,255, destination: 0,255,0,255 PASS PASS Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-atop, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-atop, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: source-atop, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 254,1,0,255 actual: 0,1,254,255, composite type: source-atop, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected composition! expected: 126,126,0,127 actual: 0,128,126,127, composite type: source-atop, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: source-atop, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 127,128,0,255 actual: 0,128,127,255, composite type: source-atop, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 128,0,0,127 actual: 0,0,126,127, composite type: source-atop, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 63,63,0,255 actual: 0,64,63,255, composite type: source-atop, source: 127,0,0,127, destination: 0,127,0,255 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: source-atop, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,63 actual: 0,0,255,63, composite type: source-atop, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: source-atop, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,68,0,63 actual: 0,68,255,63, composite type: source-atop, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 190,62,0,127 actual: 0,64,190,127, composite type: source-atop, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: source-atop, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 190,62,255,127 actual: 255,64,190,127, composite type: source-atop, source: 255,0,255,191, destination: 0,255,255,127 destination-over Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 254,1,0,255 actual: 0,1,254,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,1 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-over, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 84,170,0,190 actual: 0,169,85,191, composite type: destination-over, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 128,127,0,255 actual: 0,127,128,255, composite type: destination-over, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-over, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: destination-over, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 63,63,0,255 actual: 0,63,64,255, composite type: destination-over, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: destination-over, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: destination-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,158 actual: 0,0,255,159, composite type: destination-over, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: destination-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: destination-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,82,0,87 actual: 0,79,255,87, composite type: destination-over, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: destination-over, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 109,145,0,222 actual: 0,145,109,223, composite type: destination-over, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: destination-over, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 109,145,255,222 actual: 255,145,109,223, composite type: destination-over, source: 255,0,255,191, destination: 0,255,255,127 destination-in PASS PASS PASS PASS PASS PASS PASS PASS PASS PASS PASS Unexpected composition! expected: 255,0,0,32 actual: 0,0,255,31, composite type: destination-in, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,95,0,8 actual: 0,63,255,8, composite type: destination-in, source: 255,127,0,32, destination: 255,63,0,63 PASS Unexpected composition! expected: 0,255,255,96 actual: 255,255,0,95, composite type: destination-in, source: 255,0,255,191, destination: 0,255,255,127 destination-out PASS PASS PASS Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-out, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-out, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-out, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,254 actual: 0,0,255,254, composite type: destination-out, source: 0,255,0,1, destination: 255,0,0,255 PASS PASS PASS PASS PASS PASS Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: destination-out, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,32 actual: 0,0,255,32, composite type: destination-out, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: destination-out, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,63,0,56 actual: 0,60,255,55, composite type: destination-out, source: 255,127,0,32, destination: 255,63,0,63 PASS Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: destination-out, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 0,255,255,32 actual: 255,255,0,32, composite type: destination-out, source: 255,0,255,191, destination: 0,255,255,127 destination-atop Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 254,1,0,255 actual: 0,1,254,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,1 PASS PASS PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-atop, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 126,126,0,127 actual: 0,126,128,127, composite type: destination-atop, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 128,127,0,255 actual: 0,127,128,255, composite type: destination-atop, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-atop, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: destination-atop, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 63,63,0,255 actual: 0,63,64,255, composite type: destination-atop, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: destination-atop, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-atop, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: destination-atop, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: destination-atop, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,111,0,32 actual: 0,111,255,32, composite type: destination-atop, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: destination-atop, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 126,126,0,191 actual: 0,126,128,191, composite type: destination-atop, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 126,126,255,191 actual: 255,126,128,191, composite type: destination-atop, source: 255,0,255,191, destination: 0,255,255,127 lighter Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,255 Unexpected composition! expected: 255,255,0,255 actual: 0,255,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,1,0,255 actual: 0,1,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,1 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 255,1,0,255 actual: 0,1,255,255, composite type: lighter, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: lighter, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 127,127,0,254 actual: 0,127,127,254, composite type: lighter, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,127,0,255 actual: 0,127,255,255, composite type: lighter, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: lighter, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 127,255,0,255 actual: 0,255,127,255, composite type: lighter, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: lighter, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,63,0,255 actual: 0,63,127,255, composite type: lighter, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: lighter, source: 127,0,0,127, destination: 0,127,0,255 Unexpected composition! expected: 63,127,0,255 actual: 0,127,63,255, composite type: lighter, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: lighter, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: lighter, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,190 actual: 0,0,255,190, composite type: lighter, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: lighter, source: 255,127,0,32, destination: 255,63,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: lighter, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,85,0,95 actual: 0,83,255,95, composite type: lighter, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: lighter, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 191,127,0,255 actual: 0,127,191,255, composite type: lighter, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: lighter, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 191,127,255,255 actual: 255,127,191,255, composite type: lighter, source: 255,0,255,191, destination: 0,255,255,127 copy Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,1 PASS PASS PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: copy, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 0,255,0,255 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: copy, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,0,0,255 actual: 0,0,127,255, composite type: copy, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: copy, source: 127,0,0,127, destination: 0,127,0,255 Unexpected composition! expected: 126,0,0,127 actual: 0,0,126,127, composite type: copy, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,127, composite type: copy, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: copy, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,127,0,32 actual: 0,127,255,32, composite type: copy, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: copy, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,191 actual: 0,0,255,191, composite type: copy, source: 255,0,0,191, destination: 0,255,0,127 PASS xor Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,255 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,0 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,0 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,1 Unexpected composition! expected: 255,0,0,254 actual: 0,0,255,254, composite type: xor, source: 255,0,0,255, destination: 0,255,0,1 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 0,255,0,0, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 0,255,0,0, destination: 255,0,0,255 Unexpected destination! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 0,255,0,1, destination: 255,0,0,255 Unexpected composition! expected: 255,0,0,254 actual: 0,0,255,254, composite type: xor, source: 0,255,0,1, destination: 255,0,0,255 PASS Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: xor, source: 255,0,0,127, destination: 0,255,0,127 Unexpected composition! expected: 126,126,0,127 actual: 0,127,127,128, composite type: xor, source: 255,0,0,127, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,255 actual: 0,0,255,255, composite type: xor, source: 255,0,0,255, destination: 0,255,0,127 Unexpected composition! expected: 255,0,0,128 actual: 0,0,255,128, composite type: xor, source: 255,0,0,255, destination: 0,255,0,127 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: xor, source: 255,0,0,127, destination: 0,255,0,255 Unexpected source! expected: 127,0,0,255 actual: 0,0,127,255, composite type: xor, source: 127,0,0,255, destination: 0,127,0,127 Unexpected composition! expected: 127,0,0,128 actual: 0,0,127,128, composite type: xor, source: 127,0,0,255, destination: 0,127,0,127 Unexpected source! expected: 126,0,0,127 actual: 0,0,126,127, composite type: xor, source: 127,0,0,127, destination: 0,127,0,255 Unexpected source! expected: 255,0,0,127 actual: 0,0,255,127, composite type: xor, source: 255,0,0,127, destination: 255,0,0,63 Unexpected destination! expected: 255,0,0,63 actual: 0,0,255,63, composite type: xor, source: 255,0,0,127, destination: 255,0,0,63 Unexpected composition! expected: 255,0,0,127 actual: 0,0,255,128, composite type: xor, source: 255,0,0,127, destination: 255,0,0,63 Unexpected source! expected: 255,127,0,32 actual: 0,127,255,32, composite type: xor, source: 255,127,0,32, destination: 255,63,0,63 Unexpected destination! expected: 255,64,0,63 actual: 0,60,255,63, composite type: xor, source: 255,127,0,32, destination: 255,63,0,63 Unexpected composition! expected: 255,83,0,79 actual: 0,80,255,79, composite type: xor, source: 255,127,0,32, destination: 255,63,0,63 Unexpected source! expected: 255,0,0,191 actual: 0,0,255,191, composite type: xor, source: 255,0,0,191, destination: 0,255,0,127 Unexpected composition! expected: 190,62,0,127 actual: 0,63,191,128, composite type: xor, source: 255,0,0,191, destination: 0,255,0,127 Unexpected destination! expected: 0,255,255,127 actual: 255,255,0,127, composite type: xor, source: 255,0,255,191, destination: 0,255,255,127 Unexpected composition! expected: 190,62,255,127 actual: 255,63,191,128, composite type: xor, source: 255,0,255,191, destination: 0,255,255,127