compositeOnto is wrong here, I'm pretty sure. We need to always sum the values, even if the composite operation is 'replace':

'The intermediate animation value produced by the animation effect for a given property is the sum of the unaccumulated animation value for the given time fraction and the final intermediate animation value of the previous iteration'

So the 'sum' applies whether or not the operation is 'add'.