unsigned int r,g,b;
unsigned char Or=img->Data[ImgOffset];
unsigned char Og=img->Data[ImgOffset+1];
unsigned char Ob=img->Data[ImgOffset+2];
unsigned char Mr=Mask->Data[ImgOffset];
unsigned char Mg=Mask->Data[ImgOffset+1];
unsigned char Mb=Mask->Data[ImgOffset+2];
unsigned char Br=this->Data[CanvasOffset];
unsigned char Bg=this->Data[CanvasOffset+1];
unsigned char Bb=this->Data[CanvasOffset+2];
r=Br*(255-Mr)+(Or*Mr);
g=Bg*(255-Mg)+(Og*Mg);
b=Bb*(255-Mb)+(Ob*Mb);
r>>=8;
g>>=8;
b>>=8;