I usually use a Frame with
UDim2.new(1, 0, 1, 0)
and then add all other components under the mainframe that contain a UDim of
UDim2.new(0, x, 0, x)
but it doesn't seem to work, and screws up.
I am really not fond of how the scaling and pixel size system works.

2 comments
You're not really specifying anything. Is the first new UDim2 size, or position? Is the second size or position? What's your issue? What defines x?
All are sizes, x represents any real number.