It seems that Flex 2 does in fact autosize, but it has a minimum size of 12 x 12 to do so. If you assign an image whose dimensions are smaller than that as a skin, the button will be scaled up to 12 x 12 if you don't provide an explicit size. This holds true in Flex 2, HF 1 through 3. Flex 3 will autosize anything, all the way down to a 1 x 1 skin.
I was using the simple test app below and adjusting the size of closeButton.png to test. Luckily, my skins are currently 10 x 10 and I think resaving them as 12 x 12 should be OK. Interesting nonetheless. Ben <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Style> Button { upSkin: Embed(source="closeButton.png"); overSkin: Embed(source="closeButton.png"); downSkin: Embed(source="closeButton.png"); disabledSkin: Embed(source="closeButton.png"); } </mx:Style> <mx:Script> <![CDATA[ private function init():void { trace(btn.getExplicitOrMeasuredWidth(), btn.getExplicitOrMeasuredHeight()); } ]]> </mx:Script> <mx:Button id="btn" /> </mx:Application>