Watching the debugger, EditorGUILayout.GetControlRect () always returns (0,0,1,1)–or a width and height of size 1. I assumed this represented a percentage of the space reserved. For example using the rects (0, 0, 0.5, 1) and (0.5, 0, 1, 1) on two different EditorGUI fields will evenly split the horizontal space between them. And this works! But take this code which treats the rect as if it were in pixels. Code (CSharp): Rect controlRect = EditorGUILayout.GetControlRect (); float labelWidthInPixels = 100f; Rect labelRect = new Rect (controlRect.x, controlRect.y, labelWidthInPixels, controlRect.height); Rect valueRect = new Rect (controlRect.x + labelWidthInPixels, controlRect.y, controlRect.width - labelWidthInPixels, controlRect.height); EditorGUI.LabelField (labelRect, "Label:"); EditorGUI.FloatField (valueRect, 10f); The debugger shows labelRect to be (0, 0, 100, 1) and valueRect to be (100, 0, -99, 1). But it works! The label takes up 100 pixels and the value field extends the remaining width. So is this intended? Does it detect crazy values and assume the person was thinking in pixel terms or something? And should I rely on this method? Any clarification would be greatly appreciated, thanks!