These options seem to be undocumented and haven't appeared on the site as far as I can see. So maybe this is a good place to show them, as they could be used as a workaround for the OP and may be useful for others:
Button["X", Null, FrameMargins -> 1,
Appearance -> {
"Default" -> FrontEnd`FileName[{"Ribbons", "Common"}, "GrayButton-Default.9.png"],
"Hover" -> FrontEnd`FileName[{"Ribbons", "Common"}, "GrayButton-Hover.9.png"],
"Pressed" -> FrontEnd`FileName[{"Ribbons", "Common"}, "GrayButton-Pressed.9.png"]}]

In general, we seem to need a 7 x 28 image. The middle column (of the image data) seems to be used as a tile. I probably don't have the edges quite right, but it produces a button-like button:
buttonImg[col_] :=
Image[Graphics[{{col, EdgeForm[],
Rectangle[{1, 1}, {6, 27}, RoundingRadius -> 2]},
{Black, Opacity[0.], Rectangle[{0, 27}, {3, 28}],
Rectangle[{4, 27}, {7, 28}]},
{Rectangle[{0, 2}, {2, 26}],
Rectangle[{5, 2}, {7, 26}], {Rectangle[{2, 25}, {3, 27}],
Rectangle[{3, 26}, {4, 28}],
Rectangle[{4, 25}, {5, 27}]}, {Rectangle[{2, 1}, {3, 3}],
Rectangle[{3, 0}, {4, 2}], Rectangle[{4, 1}, {5, 3}]}}},
PlotRangePadding -> None, PlotRange -> {{0, 7}, {0, 28}}],
ImageSize -> {7, 28}]
OP's example:
Button["X", Null, FrameMargins -> 1,
Appearance -> {
"Default" -> buttonImg[GrayLevel[0.98]],
"Hover" -> buttonImg[GrayLevel[0.9]],
"Pressed" -> buttonImg[RGBColor[0.5, 0.7, 1.]]}]

The image is resized, perhaps by tiling the middle of the image:
Button[X^2/(X + 1), Null, FrameMargins -> 1,
Appearance -> {
"Default" -> buttonImg[GrayLevel[0.98]],
"Hover" -> buttonImg[GrayLevel[0.9]],
"Pressed" -> buttonImg[RGBColor[0.5, 0.7, 1.]]}]

Of course, any image may be used:
Button["X", Null,
Appearance -> {
"Default" -> Image@Graphics[{Circle[]}],
"Hover" -> Image@Graphics[{EdgeForm[Black], LightGray, Disk[]}],
"Pressed" -> Image@Graphics[{EdgeForm[Black], Red, Disk[]}]}]
In this case, it seems to resize the image by scaling:
Button[(1 + y)^40 // Expand, Null,
Appearance -> {
"Default" -> Image@Graphics[{Circle[]}],
"Hover" -> Image@Graphics[{EdgeForm[Black], LightGray, Disk[]}],
"Pressed" -> Image@Graphics[{EdgeForm[Black], Red, Disk[]}]}]

ImageSize -> Fulland see if this makes any difference. – Nasser Mar 15 '15 at 03:18ImageSize -> Fulllooks the same as the first example. It's (another) bug, I guess. – orome Mar 15 '15 at 12:34