diff --git a/src/raster/rotate.cpp b/src/raster/rotate.cpp index 7b5c341a8..8a8f6b324 100644 --- a/src/raster/rotate.cpp +++ b/src/raster/rotate.cpp @@ -190,14 +190,14 @@ class RgbDelegate : public GenericDelegate { public: RgbDelegate(color_t mask_color) { m_blender = rgba_blenders[BLEND_MODE_NORMAL]; - m_mask_color = mask_color & rgba_rgb_mask; + m_mask_color = mask_color; } void feedLine(Image* spr, int spr_x, int spr_y) { ASSERT(m_it != m_end); register int c = spr->getPixel(spr_x, spr_y); - if ((c & rgba_rgb_mask) != m_mask_color) + if ((rgba_geta(m_mask_color) == 0) || ((c & rgba_rgb_mask) != (m_mask_color & rgba_rgb_mask))) *m_it = m_blender(*m_it, c, 255); ++m_it; @@ -212,14 +212,14 @@ class GrayscaleDelegate : public GenericDelegate { public: GrayscaleDelegate(color_t mask_color) { m_blender = graya_blenders[BLEND_MODE_NORMAL]; - m_mask_color = mask_color & graya_v_mask; + m_mask_color = mask_color; } void feedLine(Image* spr, int spr_x, int spr_y) { ASSERT(m_it != m_end); register int c = spr->getPixel(spr_x, spr_y); - if ((c & graya_v_mask) != m_mask_color) + if ((graya_geta(m_mask_color) == 0) || ((c & graya_v_mask) != (m_mask_color & graya_v_mask))) *m_it = m_blender(*m_it, c, 255); ++m_it;