off by one
saner defaults for color envelope
avoid duplicate calls to effect

has to be done here, rather than in the caller, as the targets of other
calls still need to be updated by the rest of the method
constrain upper bound of gamma
gamma and normalization fixes

normalize turns out not to be much of a benefit