Ok, fixed it. It was a stupid bug:
should be
Reading the RGB Pixel from Buffer1 without to mask out the Alpha Channel, and then ORing the Alphabyte of buffer2 to it gave me these strange Alpha values. Kind of a typo.
rgb1=readpixelfast(x,y,buffer1) rgb2=readpixelfast(x,y,buffer2) and $FFFFFF rgb3=rgb1 or ((rgb2 and $FF)shl 24) writepixelfast x,y,rgb3,buffer1
should be
rgb1=readpixelfast(x,y,buffer1) and $FFFFFF rgb2=readpixelfast(x,y,buffer2) and $FFFFFF rgb3=rgb1 or ((rgb2 and $FF)shl 24) writepixelfast x,y,rgb3,buffer1
Reading the RGB Pixel from Buffer1 without to mask out the Alpha Channel, and then ORing the Alphabyte of buffer2 to it gave me these strange Alpha values. Kind of a typo.