Понял, спасибо большое. С иконками разного DPI все равно ничего не получается, они просто делают кнопку более крупной, а пустая окантовка по краям все равно остается. В общем буду делать скин кнопки.
Добавлено через 1 час 38 минут
И еще один вопрос по скинованию кнопки с компонентом. В общем я сделал так:

Код AS3:
[Bindable]
public static var selIcon:SmallSelectedIcon = new SmallSelectedIcon();
<s:actionContent>
<s:Button icon="{ selIcon }" skinClass="theme.ActionBtnSkinComp" click="navigator.pushView(views.Selected);"/>
</s:actionContent>
и все нормально, обновляю как мне надо компонент, все ок. Проблема со скином, вот его класс (ActionBtnSkinComp):

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<!-- host component -->
<fx:Metadata>
[HostComponent("spark.components.Button")]
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="disabled" />
<s:State name="down" />
<s:State name="over" />
<s:State name="up" />
</s:states>
<s:BitmapImage id="iconDisplay" left="0" right="0" top="0" bottom="0" />
<!-- SkinParts
name=iconDisplay, type=spark.primitives.BitmapImage, required=false
name=labelDisplay, type=spark.core.IDisplayText, required=false
-->
</s:SparkSkin>
когда я присваиваю его кнопке она исчезает.
Добавлено через 1 час 57 минут
В принципе я это тоже исправил скопировав из мобильной темы класс ButtonSkin.as, и внеся в него необходимые мне изменения, затем присвоил его моей кнопке. Но если есть подходы получше, просьба ими поделиться))