blend_color_dodge (comp4_t dca, comp4_t da, comp4_t sca, comp4_t sa)
{
if (sca >= sa) {
- return DIV_ONE_UNc (sa * da);
+ return dca == 0 ? 0 : DIV_ONE_UNc (sa * da);
} else {
comp4_t rca = dca * sa * sa / (sa - sca);
return DIV_ONE_UNc (rca > sa * da ? sa * da : rca);
blend_color_burn (comp4_t dca, comp4_t da, comp4_t sca, comp4_t sa)
{
if (sca == 0) {
- return 0;
+ return dca < da ? 0 : DIV_ONE_UNc (sa * da);
} else {
comp4_t sada = sa * da;
comp4_t rca = (da - dca) * sa * sa / sca;