--- ../../../SDL-1.2.15/src/video/SDL_blit_N.c 2012-01-19 07:30:06.000000000 +0100 +++ SDL_blit_N.c 2012-02-19 11:41:40.000000000 +0100 @@ -689,6 +689,8 @@ while ((UNALIGNED_PTR(dst)) && (width)) { bits = *(src++); RGBA_FROM_8888(bits, srcfmt, r, g, b, a); + if(!srcfmt->Amask) + a = srcfmt->alpha; *(dst++) = MAKE8888(dstfmt, r, g, b, a); width--; } @@ -716,6 +718,8 @@ while (extrawidth) { bits = *(src++); /* max 7 pixels, don't bother with prefetch. */ RGBA_FROM_8888(bits, srcfmt, r, g, b, a); + if(!srcfmt->Amask) + a = srcfmt->alpha; *(dst++) = MAKE8888(dstfmt, r, g, b, a); extrawidth--; } @@ -769,6 +773,8 @@ vec_dstst(dst+scalar_dst_lead, DST_CTRL(2,32,1024), DST_CHAN_DEST); bits = *(src++); RGBA_FROM_8888(bits, srcfmt, r, g, b, a); + if(!srcfmt->Amask) + a = srcfmt->alpha; *(dst++) = MAKE8888(dstfmt, r, g, b, a); width--; } @@ -798,6 +804,8 @@ while (extrawidth) { bits = *(src++); /* max 7 pixels, don't bother with prefetch. */ RGBA_FROM_8888(bits, srcfmt, r, g, b, a); + if(!srcfmt->Amask) + a = srcfmt->alpha; *(dst++) = MAKE8888(dstfmt, r, g, b, a); extrawidth--; }