summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libnsbmp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libnsbmp.c b/src/libnsbmp.c
index 7318347..0e241a1 100644
--- a/src/libnsbmp.c
+++ b/src/libnsbmp.c
@@ -555,6 +555,8 @@ static bmp_result bmp_decode_rgb32(bmp_image *bmp, uint8_t **start, int bytes)
}
if (bmp->opaque) {
scanline[x] |= (0xff << 24);
+ } else {
+ scanline[x] |= data[3] << 24;
}
data += 4;
scanline[x] = read_uint32((uint8_t *)&scanline[x],0);
@@ -816,6 +818,11 @@ static bmp_result bmp_decode_mask(bmp_image *bmp, uint8_t *data, int bytes)
uint32_t x, y, swidth;
uint32_t cur_byte = 0;
+ if (bmp->bpp == 32) {
+ /* should already have proper alpha */
+ return BMP_OK;
+ }
+
swidth = bmp->bitmap_callbacks.bitmap_get_bpp(bmp->bitmap) * bmp->width;
top = bmp->bitmap_callbacks.bitmap_get_buffer(bmp->bitmap);
if (!top)