Я полагаю, что они просто добавляют / вычитают постоянную из значения RGB.
R' = max( min(255, R+diff), 0);
G' = max( min(255, G+diff), 0);
B' = max( min(255, B+diff), 0);
Хотя использование упомянутого вами метода, вероятно, даст более правильные результаты.Ожидается получение значений за пределами диапазона 0-255, и вы должны с этим справиться.Вы также можете учесть гамма-коррекцию в своих расчетах.