а чего не transform.localPosition? В целом - пивот твоего парента не в нуле координат наверное. В инспекторе отображается localPosition.
Вообще с позиционированием элементов UI из кода есть свои заморочки, стараюсь этого не делать. Обычно все координаты заранее в префабе прописаны. Делаю просто
var uiElement = Instantiate(prefab);
uiElement.GetComponent<RectTransform>().SetParnet(parentTransform, false);