diff --git a/src/gfx/combine_image.cpp b/src/gfx/combine_image.cpp index f639ecb4..269aa3ba 100644 --- a/src/gfx/combine_image.cpp +++ b/src/gfx/combine_image.cpp @@ -295,11 +295,17 @@ COMBINE_FUN(COMBINE_SMALLER_THAN_250, a < 250 ? b : a) /// The results are stored in the image A. template void combine_image_do(Image& a, Image b) { - UInt size = a.GetWidth() * a.GetHeight() * 3; + UInt size = a.GetWidth() * a.GetHeight(); Byte *dataA = a.GetData(), *dataB = b.GetData(); // for each pixel: apply function - for (UInt i = 0 ; i < size ; ++i) { + for (UInt i = 0 ; i < (size * 3); ++i) { dataA[i] = Combine::f(dataA[i], dataB[i]); + } + if (a.HasAlpha() && b.HasAlpha()) { + Byte* alphaA = a.GetAlpha(), * alphaB = b.GetAlpha(); + for (UInt i = 0; i < size; ++i) { + alphaA[i] = Combine::f(alphaA[i], alphaB[i]); + } } }