| Index: core/fxge/dib/fx_dib_composite.cpp
 | 
| diff --git a/core/fxge/dib/fx_dib_composite.cpp b/core/fxge/dib/fx_dib_composite.cpp
 | 
| index 0bf67ccb7116052d4d5563408d42c4311d4f75ad..5bfe46e572246934d74e17e39293d29f54430135 100644
 | 
| --- a/core/fxge/dib/fx_dib_composite.cpp
 | 
| +++ b/core/fxge/dib/fx_dib_composite.cpp
 | 
| @@ -200,7 +200,9 @@ void _RGB_Blend(int blend_mode,
 | 
|                  const uint8_t* src_scan,
 | 
|                  uint8_t* dest_scan,
 | 
|                  int results[3]) {
 | 
| -  _RGB src, back, result;
 | 
| +  _RGB src;
 | 
| +  _RGB back;
 | 
| +  _RGB result = {0, 0, 0};
 | 
|    src.red = src_scan[2];
 | 
|    src.green = src_scan[1];
 | 
|    src.blue = src_scan[0];
 | 
| @@ -291,7 +293,6 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
 | 
|  
 | 
|    if (blend_type) {
 | 
|      FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -    int blended_color;
 | 
|      if (src_alpha_scan) {
 | 
|        for (int col = 0; col < pixel_count; col++) {
 | 
|          uint8_t back_alpha = *dst_alpha_scan;
 | 
| @@ -332,12 +333,10 @@ void _CompositeRow_Argb2Graya(uint8_t* dest_scan,
 | 
|          } else {
 | 
|            gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
 | 
|          }
 | 
| -        if (bNonseparableBlend) {
 | 
| -          blended_color =
 | 
| -              blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -        }
 | 
| -        gray = bNonseparableBlend ? blended_color
 | 
| -                                  : _BLEND(blend_type, *dest_scan, gray);
 | 
| +        if (bNonseparableBlend)
 | 
| +          gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +        else
 | 
| +          gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|          *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio);
 | 
|          dest_scan++;
 | 
|          dst_alpha_scan++;
 | 
| @@ -498,7 +497,6 @@ inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan,
 | 
|  
 | 
|    if (blend_type) {
 | 
|      FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -    int blended_color;
 | 
|      if (src_alpha_scan) {
 | 
|        for (int col = 0; col < pixel_count; col++) {
 | 
|          int src_alpha = *src_alpha_scan++;
 | 
| @@ -511,12 +509,10 @@ inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan,
 | 
|            else
 | 
|              gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
 | 
|  
 | 
| -          if (bNonseparableBlend) {
 | 
| -            blended_color =
 | 
| -                blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -          }
 | 
| -          gray = bNonseparableBlend ? blended_color
 | 
| -                                    : _BLEND(blend_type, *dest_scan, gray);
 | 
| +          if (bNonseparableBlend)
 | 
| +            gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +          else
 | 
| +            gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|            *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha);
 | 
|          }
 | 
|          dest_scan++;
 | 
| @@ -534,12 +530,10 @@ inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan,
 | 
|            else
 | 
|              gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
 | 
|  
 | 
| -          if (bNonseparableBlend) {
 | 
| -            blended_color =
 | 
| -                blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -          }
 | 
| -          gray = bNonseparableBlend ? blended_color
 | 
| -                                    : _BLEND(blend_type, *dest_scan, gray);
 | 
| +          if (bNonseparableBlend)
 | 
| +            gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +          else
 | 
| +            gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|            *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha);
 | 
|          }
 | 
|          dest_scan++;
 | 
| @@ -599,19 +593,16 @@ inline void _CompositeRow_Rgb2Gray(uint8_t* dest_scan,
 | 
|    }
 | 
|    if (blend_type) {
 | 
|      FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -    int blended_color;
 | 
|      for (int col = 0; col < pixel_count; col++) {
 | 
|        if (pIccTransform) {
 | 
|          pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1);
 | 
|        } else {
 | 
|          gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
 | 
|        }
 | 
| -      if (bNonseparableBlend) {
 | 
| -        blended_color =
 | 
| -            blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -      }
 | 
| -      gray = bNonseparableBlend ? blended_color
 | 
| -                                : _BLEND(blend_type, *dest_scan, gray);
 | 
| +      if (bNonseparableBlend)
 | 
| +        gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +      else
 | 
| +        gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|        if (clip_scan && clip_scan[col] < 255) {
 | 
|          *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]);
 | 
|        } else {
 | 
| @@ -650,7 +641,6 @@ void _CompositeRow_Rgb2Graya(uint8_t* dest_scan,
 | 
|      pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule();
 | 
|    }
 | 
|    if (blend_type) {
 | 
| -    int blended_color;
 | 
|      FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
|      for (int col = 0; col < pixel_count; col++) {
 | 
|        int back_alpha = *dest_alpha_scan;
 | 
| @@ -685,12 +675,10 @@ void _CompositeRow_Rgb2Graya(uint8_t* dest_scan,
 | 
|        } else {
 | 
|          gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan);
 | 
|        }
 | 
| -      if (bNonseparableBlend) {
 | 
| -        blended_color =
 | 
| -            blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -      }
 | 
| -      gray = bNonseparableBlend ? blended_color
 | 
| -                                : _BLEND(blend_type, *dest_scan, gray);
 | 
| +      if (bNonseparableBlend)
 | 
| +        gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +      else
 | 
| +        gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|        *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio);
 | 
|        dest_scan++;
 | 
|        src_scan += src_Bpp;
 | 
| @@ -1849,19 +1837,16 @@ inline void _CompositeRow_8bppPal2Gray(uint8_t* dest_scan,
 | 
|    if (src_alpha_scan) {
 | 
|      if (blend_type) {
 | 
|        FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -      int blended_color;
 | 
|        for (int col = 0; col < pixel_count; col++) {
 | 
|          uint8_t gray = pPalette[*src_scan];
 | 
|          int src_alpha = *src_alpha_scan++;
 | 
|          if (clip_scan) {
 | 
|            src_alpha = clip_scan[col] * src_alpha / 255;
 | 
|          }
 | 
| -        if (bNonseparableBlend) {
 | 
| -          blended_color =
 | 
| -              blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -        }
 | 
| -        gray = bNonseparableBlend ? blended_color
 | 
| -                                  : _BLEND(blend_type, *dest_scan, gray);
 | 
| +        if (bNonseparableBlend)
 | 
| +          gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +        else
 | 
| +          gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|          if (src_alpha) {
 | 
|            *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha);
 | 
|          } else {
 | 
| @@ -1889,15 +1874,12 @@ inline void _CompositeRow_8bppPal2Gray(uint8_t* dest_scan,
 | 
|    } else {
 | 
|      if (blend_type) {
 | 
|        FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -      int blended_color;
 | 
|        for (int col = 0; col < pixel_count; col++) {
 | 
|          uint8_t gray = pPalette[*src_scan];
 | 
| -        if (bNonseparableBlend) {
 | 
| -          blended_color =
 | 
| -              blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -        }
 | 
| -        gray = bNonseparableBlend ? blended_color
 | 
| -                                  : _BLEND(blend_type, *dest_scan, gray);
 | 
| +        if (bNonseparableBlend)
 | 
| +          gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +        else
 | 
| +          gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|          if (clip_scan && clip_scan[col] < 255) {
 | 
|            *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]);
 | 
|          } else {
 | 
| @@ -1931,7 +1913,6 @@ inline void _CompositeRow_8bppPal2Graya(uint8_t* dest_scan,
 | 
|    if (src_alpha_scan) {
 | 
|      if (blend_type) {
 | 
|        FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -      int blended_color;
 | 
|        for (int col = 0; col < pixel_count; col++) {
 | 
|          uint8_t gray = pPalette[*src_scan];
 | 
|          src_scan++;
 | 
| @@ -1961,12 +1942,10 @@ inline void _CompositeRow_8bppPal2Graya(uint8_t* dest_scan,
 | 
|          *dest_alpha_scan =
 | 
|              back_alpha + src_alpha - back_alpha * src_alpha / 255;
 | 
|          int alpha_ratio = src_alpha * 255 / (*dest_alpha_scan);
 | 
| -        if (bNonseparableBlend) {
 | 
| -          blended_color =
 | 
| -              blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -        }
 | 
| -        gray = bNonseparableBlend ? blended_color
 | 
| -                                  : _BLEND(blend_type, *dest_scan, gray);
 | 
| +        if (bNonseparableBlend)
 | 
| +          gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +        else
 | 
| +          gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|          *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio);
 | 
|          dest_alpha_scan++;
 | 
|          dest_scan++;
 | 
| @@ -2008,7 +1987,6 @@ inline void _CompositeRow_8bppPal2Graya(uint8_t* dest_scan,
 | 
|    } else {
 | 
|      if (blend_type) {
 | 
|        FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -      int blended_color;
 | 
|        for (int col = 0; col < pixel_count; col++) {
 | 
|          uint8_t gray = pPalette[*src_scan];
 | 
|          src_scan++;
 | 
| @@ -2028,12 +2006,10 @@ inline void _CompositeRow_8bppPal2Graya(uint8_t* dest_scan,
 | 
|              back_alpha + src_alpha - back_alpha * src_alpha / 255;
 | 
|          *dest_alpha_scan++ = dest_alpha;
 | 
|          int alpha_ratio = src_alpha * 255 / dest_alpha;
 | 
| -        if (bNonseparableBlend) {
 | 
| -          blended_color =
 | 
| -              blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -        }
 | 
| -        gray = bNonseparableBlend ? blended_color
 | 
| -                                  : _BLEND(blend_type, *dest_scan, gray);
 | 
| +        if (bNonseparableBlend)
 | 
| +          gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +        else
 | 
| +          gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|          *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio);
 | 
|          dest_scan++;
 | 
|        }
 | 
| @@ -2074,18 +2050,15 @@ inline void _CompositeRow_1bppPal2Gray(uint8_t* dest_scan,
 | 
|    int set_gray = pPalette[1];
 | 
|    if (blend_type) {
 | 
|      FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -    int blended_color;
 | 
|      for (int col = 0; col < pixel_count; col++) {
 | 
|        uint8_t gray =
 | 
|            (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8)))
 | 
|                ? set_gray
 | 
|                : reset_gray;
 | 
| -      if (bNonseparableBlend) {
 | 
| -        blended_color =
 | 
| -            blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -      }
 | 
| -      gray = bNonseparableBlend ? blended_color
 | 
| -                                : _BLEND(blend_type, *dest_scan, gray);
 | 
| +      if (bNonseparableBlend)
 | 
| +        gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +      else
 | 
| +        gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|        if (clip_scan && clip_scan[col] < 255) {
 | 
|          *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]);
 | 
|        } else {
 | 
| @@ -2120,7 +2093,6 @@ inline void _CompositeRow_1bppPal2Graya(uint8_t* dest_scan,
 | 
|    int set_gray = pPalette[1];
 | 
|    if (blend_type) {
 | 
|      FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE;
 | 
| -    int blended_color;
 | 
|      for (int col = 0; col < pixel_count; col++) {
 | 
|        uint8_t gray =
 | 
|            (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8)))
 | 
| @@ -2142,12 +2114,10 @@ inline void _CompositeRow_1bppPal2Graya(uint8_t* dest_scan,
 | 
|            back_alpha + src_alpha - back_alpha * src_alpha / 255;
 | 
|        *dest_alpha_scan++ = dest_alpha;
 | 
|        int alpha_ratio = src_alpha * 255 / dest_alpha;
 | 
| -      if (bNonseparableBlend) {
 | 
| -        blended_color =
 | 
| -            blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| -      }
 | 
| -      gray = bNonseparableBlend ? blended_color
 | 
| -                                : _BLEND(blend_type, *dest_scan, gray);
 | 
| +      if (bNonseparableBlend)
 | 
| +        gray = blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan;
 | 
| +      else
 | 
| +        gray = _BLEND(blend_type, *dest_scan, gray);
 | 
|        *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio);
 | 
|        dest_scan++;
 | 
|      }
 | 
| 
 |