From 68ac6486b106751f79e2ff2f4d53e56843521ce5 Mon Sep 17 00:00:00 2001 From: FRIGN Date: Sun, 31 Jan 2016 11:05:00 +0100 Subject: [PATCH] Fix alpha blending - "/ 257", because 255 * 257 = UINT16_MAX - "/ 255", because that's the maximum possible RGB value --- sent.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sent.c b/sent.c index cdc637f..a397942 100644 --- a/sent.c +++ b/sent.c @@ -258,15 +258,15 @@ int ffread(Image *img) nbytes += count; } for (x = 0; x < rowlen / 2; x += 4) { - fg_r = ntohs(row[x + 0]) / 256; - fg_g = ntohs(row[x + 1]) / 256; - fg_b = ntohs(row[x + 2]) / 256; - opac = ntohs(row[x + 3]) / 256; + fg_r = ntohs(row[x + 0]) / 257; + fg_g = ntohs(row[x + 1]) / 257; + fg_b = ntohs(row[x + 2]) / 257; + opac = ntohs(row[x + 3]) / 257; /* blend opaque part of image data with window background color to * emulate transparency */ - img->buf[off++] = (fg_r * opac + bg_r * (255 - opac)) / 256; - img->buf[off++] = (fg_g * opac + bg_g * (255 - opac)) / 256; - img->buf[off++] = (fg_b * opac + bg_b * (255 - opac)) / 256; + img->buf[off++] = (fg_r * opac + bg_r * (255 - opac)) / 255; + img->buf[off++] = (fg_g * opac + bg_g * (255 - opac)) / 255; + img->buf[off++] = (fg_b * opac + bg_b * (255 - opac)) / 255; } }