diff --git a/gfx.c b/gfx.c index 2d4e57d240..bbd9d1efe5 100644 --- a/gfx.c +++ b/gfx.c @@ -1351,30 +1351,25 @@ static void GfxMainBlitter(const Sprite* sprite, int x, int y, int mode) bp.dst += bp.pitch * (y >> dpi->zoom); } - if ( (y = y + bp.height - dpi->height) > 0) { - bp.height -= y; + if (bp.height > dpi->height - y) { + bp.height = dpi->height - y; if (bp.height <= 0) return; } - start_x = 0; - x &= zoom_mask; if ( (x -= dpi->left) < 0) { bp.width += x; if (bp.width <= 0) return; - start_x -= x; bp.sprite -= x; x = 0; } bp.dst += x >> dpi->zoom; - if ( (x = x + bp.width - dpi->width) > 0) { - bp.width -= x; + if (bp.width > dpi->width - x) { + bp.width = dpi->width - x; if (bp.width <= 0) return; - start_x += x; } - bp.start_x = start_x; zf_uncomp[dpi->zoom](&bp); }