diff --git a/mapresample.c b/mapresample.c index 419d07bb9c..7980355ae2 100644 --- a/mapresample.c +++ b/mapresample.c @@ -671,7 +671,7 @@ msAverageRasterResampler( imageObj *psSrcImage, rasterBufferObj *src_rb, alpha = (unsigned char) MAX(0,MIN(255,255*dfAlpha01+0.5)); - RB_SET_PIXEL(dst_rb,nDstX,nDstY, + RB_MIX_PIXEL(dst_rb,nDstX,nDstY, red, green, blue, alpha ); } #ifdef USE_GD diff --git a/maputil.c b/maputil.c index ef0d309432..34ead4d95e 100644 --- a/maputil.c +++ b/maputil.c @@ -2096,19 +2096,19 @@ void msAlphaBlendPM( unsigned char red_src, unsigned char green_src, /* Cases with actual blending. */ /* -------------------------------------------------------------------- */ if(!alpha_dst || *alpha_dst == 255) { - int weight_dst = 256 - alpha_src; + int weight_dst = 255 - alpha_src; - *red_dst = (256 * red_src + *red_dst * weight_dst) >> 8; - *green_dst = (256 * green_src + *green_dst * weight_dst) >> 8; - *blue_dst = (256 * blue_src + *blue_dst * weight_dst) >> 8; + *red_dst = (alpha_src * red_src + *red_dst * weight_dst) >> 8; + *green_dst = (alpha_src * green_src + *green_dst * weight_dst) >> 8; + *blue_dst = (alpha_src * blue_src + *blue_dst * weight_dst) >> 8; } else { - int weight_dst = (256 - alpha_src); + int weight_dst = (255 - alpha_src); - *red_dst = (256 * red_src + *red_dst * weight_dst) >> 8; - *green_dst = (256 * green_src + *green_dst * weight_dst) >> 8; - *blue_dst = (256 * blue_src + *blue_dst * weight_dst) >> 8; + *red_dst = (alpha_src * red_src + *red_dst * weight_dst) >> 8; + *green_dst = (alpha_src * green_src + *green_dst * weight_dst) >> 8; + *blue_dst = (alpha_src * blue_src + *blue_dst * weight_dst) >> 8; - *alpha_dst = (256 * alpha_src + *alpha_dst * weight_dst) >> 8; + *alpha_dst = (255 * alpha_src + *alpha_dst * weight_dst) >> 8; } } diff --git a/msautotest b/msautotest index 39f8724d44..4e40228d29 160000 --- a/msautotest +++ b/msautotest @@ -1 +1 @@ -Subproject commit 39f8724d448da982f38706d1a2aa43affb0c500c +Subproject commit 4e40228d290e0c3e0775183a26a9fefa1c8a2ac0