Did you load the grid using deferred refresh? To my experience that can make a huge difference.
I usually let the user choose the width (and other aspects of the layout like column order) they like and use the Load/Save Layout. Another approach I sometimes use is to calculate the width of the probably largest column myself. Since the application knows the data it displays, it can make a guess that works most of the time.
Regards Erwin