Я думаю, что проблема в том, что вы меняете RenderTransformOrigin для каждого жеста повышения, что приводит к искажению.Я бы попытался оставить RenderTransformOrigin с фиксированным значением 0,5,0,5, чтобы обеспечить равномерный масштаб.
Я предполагаю, что вы перемещали источник, чтобы попытаться увеличить или уменьшить частьизображение, с которого пользователь начал жест.Я думаю, что для достижения этого вам нужно будет разрешить пользователю перемещаться по изображению после увеличения.
Еще одна точка, масштабный коэффициент всегда один и тот же, поэтому вы должны просто рассчитать его один раз, а затемназначьте его как ScaleX и ScaleY .