As far as I know, saturation works like this:
out.r = in.r * r
out.g = in.g * g
out.b = in.b * b
out.a = in.a * a
So the output color is limit to input color, but some time we need over expose effect like:
out.r = in.r + r
out.g = in.g + g
out.b = in.b + b
out.a = in.a
or just tint to single color:
out.r = tint.r
out.g = tint.g
out.b = tint.b
out.a = in.a