Improve numerical stability, preserve alpha

The 'pow' function doesn't work on negative values, so you should call saturate first.
Also made it preserve the alpha channel, can't think of a good reason why you shouldn't.