Полагаю, вы меняете все три значения цвета одинаково, так что ...
Для масштабирования цветов RGB используется такая матрица:
float mat[4][4] = {
rscale, 0.0, 0.0, 0.0,
0.0, gscale, 0.0, 0.0,
0.0, 0.0, bscale, 0.0,
0.0, 0.0, 0.0, 1.0,
};
От: http://www.graficaobscura.com/matrix/index.html