if(col.a!=255) {
int ainv = 255-col.a;
- col.r = (col.r*col.a)>>8;
- col.g = (col.g*col.a)>>8;
- col.b = (col.b*col.a)>>8;
+ col.r = (col.r*col.a)/255;
+ col.g = (col.g*col.a)/255;
+ col.b = (col.b*col.a)/255;
do {
if(z[bitpos]&bit) {
- line[x].r = ((line[x].r*ainv)>>8)+col.r;
- line[x].g = ((line[x].g*ainv)>>8)+col.g;
- line[x].b = ((line[x].b*ainv)>>8)+col.b;
+ line[x].r = ((line[x].r*ainv)/255)+col.r;
+ line[x].g = ((line[x].g*ainv)/255)+col.g;
+ line[x].b = ((line[x].b*ainv)/255)+col.b;
//line[x].a = 255;
- line[x].a = ((line[x].a*ainv)>>8)+col.a;
+ line[x].a = ((line[x].a*ainv)/255)+col.a;
}
bit <<= 1;
if(!bit) {
ainv = 255-col.a;
/* needs bitmap with premultiplied alpha */
- line[x].r = ((line[x].r*ainv)>>8)+col.r;
- line[x].g = ((line[x].g*ainv)>>8)+col.g;
- line[x].b = ((line[x].b*ainv)>>8)+col.b;
+ line[x].r = ((line[x].r*ainv)/255)+col.r;
+ line[x].g = ((line[x].g*ainv)/255)+col.g;
+ line[x].b = ((line[x].b*ainv)/255)+col.b;
line[x].a = 255;
}
bit <<= 1;