So, when I use setBounds() for the image to fit the image according to the dimensions I desire, the image I use does not adhere to the width and height I specify in the code.
The button scales the image inside it with a bit of padding, and keeps the proportions correct. Not sure exactly what you were expecting it to do, but there’s nothing wrong with it, it works the way it was intended.
If you have some specific way that you want your image scaled, then draw it yourself, don’t use ImageButton!