The problem with that code are the actual integers representing the colours. I don't know how those values were derived but all of them have their alpha values set to 0 which means the colours are completely transparent. The solution to this is simple however, you just set the most significant byte of the Integer to 255 so when Color.FromArgb converts it, it has an alpha value of 255 which means the colour is completely opaque:-
Code:
        Dim doc As XDocument = XDocument.Load("d:\buttons.txt")

        For Each xb In doc.Root.Elements("button")

            Me.Controls.Add(New Button With {
                .Text = xb.Attribute("text").Value,
                .Width = CInt(xb.Attribute("width").Value),
                .Height = CInt(xb.Attribute("height").Value),
                .Left = CInt(xb.Attribute("x").Value),
                .Top = CInt(xb.Attribute("y").Value),
                .BackColor = Color.FromArgb(CInt(xb.Attribute("color").Value) Or &HFF000000I) 'Set alpha to 255
            })

        Next