diff --git a/image-sixel.c b/image-sixel.c index 1c93d7a7..5c800461 100644 --- a/image-sixel.c +++ b/image-sixel.c @@ -455,12 +455,12 @@ sixel_scale(struct sixel_image *si, u_int xpixel, u_int ypixel, u_int ox, new->p2 = si->p2; new->set_ra = si->set_ra; - /* clamp to slice end */ - new->ra_x = si->ra_x < psx ? si->ra_x : psx; - new->ra_y = si->ra_y < psy ? si->ra_y : psy; - /* subtract slice origin */ + /* subtract offset */ new->ra_x = new->ra_x > pox ? new->ra_x - pox : 0; new->ra_y = new->ra_y > poy ? new->ra_y - poy : 0; + /* clamp to size */ + new->ra_x = si->ra_x < psx ? si->ra_x : psx; + new->ra_y = si->ra_y < psy ? si->ra_y : psy; /* resize */ new->ra_x = new->ra_x * xpixel / si->xpixel; new->ra_y = new->ra_y * ypixel / si->ypixel;