diff --git a/quantum/rgblight/rgblight.c b/quantum/rgblight/rgblight.c index b0f2dfdc1d..13ef4a7586 100644 --- a/quantum/rgblight/rgblight.c +++ b/quantum/rgblight/rgblight.c @@ -785,10 +785,13 @@ static void rgblight_layers_write(void) { break; // No more segments } // Write segment.count LEDs +# ifdef RGBLIGHT_LAYERS_RETAIN_VAL + uint8_t scaled_segment_val = ((uint16_t)current_val * segment.val) >> 8; +# endif rgb_led_t *const limit = &led[MIN(segment.index + segment.count, RGBLIGHT_LED_COUNT)]; for (rgb_led_t *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) { # ifdef RGBLIGHT_LAYERS_RETAIN_VAL - sethsv(segment.hue, segment.sat, current_val, led_ptr); + sethsv(segment.hue, segment.sat, scaled_segment_val, led_ptr); # else sethsv(segment.hue, segment.sat, segment.val, led_ptr); # endif