The setBackgoundColor() is intended for text not graphics.
i.e. like you would say in Adafruit_GFX:
tft.setTextColor(TFT_WHITE, TFT_YELLOW); //white text on yellow background
tft.setTextColor(TFT_RED); //red text on transparent background
tft.setTextColor(TFT_RED, TFT_RED); //foreground == background means transparent
Using the full-fat drawBitmap() method is relatively slow in Adafruit_GFX.
It is faster to draw a rectangle in the background colour. Then plot drawBitmap() transparently.
Some hardware libraries will provide a hardware drawBitmap() for the full-fat foreground and background.
David.