From b6d329473d1dbe1b765727183958b12afddf859f Mon Sep 17 00:00:00 2001 From: Maria Pospelova Date: Fri, 29 May 2026 13:21:42 +0000 Subject: [PATCH 1/2] Zero all channels for AND-mask-transparent pixels --- src/codecs/ico/decoder.rs | 4 ++-- .../reference/ico/images/bmp-24bpp-mask.ico.png | Bin 700 -> 612 bytes .../ico/images/bmp-32bpp-alpha.ico.png | Bin 700 -> 612 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/codecs/ico/decoder.rs b/src/codecs/ico/decoder.rs index b7fe270996..7316a5c5ff 100644 --- a/src/codecs/ico/decoder.rs +++ b/src/codecs/ico/decoder.rs @@ -396,8 +396,8 @@ impl ImageDecoder for IcoDecoder { } if mask_byte & (1 << bit) != 0 { - // Set alpha channel to transparent. - row[x as usize][3] = 0; + // Set pixel to fully transparent black. + row[x as usize] = [0, 0, 0, 0]; } x += 1; diff --git a/tests/reference/ico/images/bmp-24bpp-mask.ico.png b/tests/reference/ico/images/bmp-24bpp-mask.ico.png index 77b763e7230306001f7bf90bdf6449d9cd1829f5..0972df048234ef3d29ba86890851b54db7eaad74 100644 GIT binary patch delta 587 zcmV-R0<`_S1>^*fB!4SOL_t(|+QnCkt->%2Oi>qr5nu!u0ajoHSb-6k1xA1oU<4Qe zM(E>^?&&a2>QMf`A$X$Y+4jys6ds@p$}jWEpcXGz&_< zD-b$|QB{EWngzDA9e`{+6>L~6a|OV$TmT*$`##6IWC{{jRp7r6F(yE%anG@dnC6g% zMe9Z#VWpXEC4bKuiKy(H8JcUgm)#M`b3phW$)?`{1Rym2A0e=Vc=yVPMMsm7anyPGZ&kn! z9GP}%HW57qvH+BMM0(AEoNBEKcpHmI?7cO^8rXZ|kAF(@-IFz${``CR~>Ot~0a z=}U%9N(jJix2xD$Rp_!7XfeWnhr=PeA#p>nUazaoW)qUTR14^QwOVDjX4xD7;{AT# z8WOuJ(omjGr`CO8aa+!;eX(e;6E2x9Qb;&3k8IaN2NQC;)~8@^?Ls4F+Hc Z`vbAq;O4-~@Vo#3002ovPDHLkV1gRA5i|e* delta 676 zcmV;V0$cs$1iS^1B!7cRL_t(|oW+-mt=d2kMQtk$&;l*c0xi%2EzknBKnc(SEzklb zIQI;>&iMaHq<5s7nO)EB++AA=udM63_(>}1NBJdf;{ATtpU#q;?jZzL1-;czI9$0PYFGqc}-8bnj1Q)?#XA}3~a6Mq;8BN&oq%?ujQ#x)Jx zRO6NmIZcu4$bl#WS%YR;2GlT4%Vxla-+t# z>@RGFj21P@^M-lEGenLIhf$v}aXz0llMGOZOm~Anu9bapP8~Aju0S(pmPO#W6zUN;vZq9^pfQk9LC82KvJsktgIK^pSf5W1 zEdvzHK@GwL>cSl2V!WAF?a>br1y&G+_i8OW$u z|9&@LifdVmG8h=5XJF`>j2mP;=QsvGQiiCc7MIJVbg@st=FXQuy+2&m-EKE-pm+Vy zGXSU4seknU*JIFRjBaxsXs|g98UP$$uh-dEf`Dcj);%7N*hj-rDrppLTIN?Wg=#~f zrqNs`CY!^g0pnNV2AO;Vh&nYdmCrVZ){oLT)GU5CDr)qF_w6w^B?F5Zn^gvk{xFGO z&tL;;jDc0nVUqz+^*fB!4SOL_t(|+QnCkt->%2Oi>qr5nu!u0ajoHSb-6k1xA1oU<4Qe zM(E>^?&&a2>QMf`A$X$Y+4jys6ds@p$}jWEpcXGz&_< zD-b$|QB{EWngzDA9e`{+6>L~6a|OV$TmT*$`##6IWC{{jRp7r6F(yE%anG@dnC6g% zMe9Z#VWpXEC4bKuiKy(H8JcUgm)#M`b3phW$)?`{1Rym2A0e=Vc=yVPMMsm7anyPGZ&kn! z9GP}%HW57qvH+BMM0(AEoNBEKcpHmI?7cO^8rXZ|kAF(@-IFz${``CR~>Ot~0a z=}U%9N(jJix2xD$Rp_!7XfeWnhr=PeA#p>nUazaoW)qUTR14^QwOVDjX4xD7;{AT# z8WOuJ(omjGr`CO8aa+!;eX(e;6E2x9Qb;&3k8IaN2NQC;)~8@^?Ls4F+Hc Z`vbAq;O4-~@Vo#3002ovPDHLkV1gRA5i|e* delta 676 zcmV;V0$cs$1iS^1B!7cRL_t(|oW+-mt=d2kMQtk$&;l*c0xi%2EzknBKnc(SEzklb zIQI;>&iMaHq<5s7nO)EB++AA=udM63_(>}1NBJdf;{ATtpU#q;?jZzL1-;czI9$0PYFGqc}-8bnj1Q)?#XA}3~a6Mq;8BN&oq%?ujQ#x)Jx zRO6NmIZcu4$bl#WS%YR;2GlT4%Vxla-+t# z>@RGFj21P@^M-lEGenLIhf$v}aXz0llMGOZOm~Anu9bapP8~Aju0S(pmPO#W6zUN;vZq9^pfQk9LC82KvJsktgIK^pSf5W1 zEdvzHK@GwL>cSl2V!WAF?a>br1y&G+_i8OW$u z|9&@LifdVmG8h=5XJF`>j2mP;=QsvGQiiCc7MIJVbg@st=FXQuy+2&m-EKE-pm+Vy zGXSU4seknU*JIFRjBaxsXs|g98UP$$uh-dEf`Dcj);%7N*hj-rDrppLTIN?Wg=#~f zrqNs`CY!^g0pnNV2AO;Vh&nYdmCrVZ){oLT)GU5CDr)qF_w6w^B?F5Zn^gvk{xFGO z&tL;;jDc0nVUqz+ Date: Fri, 29 May 2026 13:35:18 +0000 Subject: [PATCH 2/2] Change wording of comment --- src/codecs/ico/decoder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codecs/ico/decoder.rs b/src/codecs/ico/decoder.rs index 7316a5c5ff..8876fb3b4f 100644 --- a/src/codecs/ico/decoder.rs +++ b/src/codecs/ico/decoder.rs @@ -396,7 +396,7 @@ impl ImageDecoder for IcoDecoder { } if mask_byte & (1 << bit) != 0 { - // Set pixel to fully transparent black. + // Set pixel to fully transparent. row[x as usize] = [0, 0, 0, 0]; }