This may change the Position in order to maintain the desired content alignment. This method may be called during initialization even if the old and new scale values are the same. This respects the UseLayoutRounding property to round off the Position. This method calls OnViewportBoundsChanged.