I ended up changing the logic in the setScale so it multiplies a private copy of scale by 0.85 but still stores the value as the user set it.  So getScale is correct now but doesn't need to do any math.  This also eliminates floating point error.