Не думаю, что вы можете установить левое и верхнее поле следующим образом:
position.leftMargin = (int)(w/2);
position.topMargin = (int)(h/2);
Попробуйте установить поля следующим образом:
position.setMargins((int)(w/2), (int)(h/2), 0, 0); // left, top, right, bottom