if u want the background to appear correctly,
u have to set the sprite size exact same as the viewport size.
im not sure if its a feature or a bug, but i found the same problem like u had. and thats how i fixed it..
#get view port size:
var ViewPortSize = get_viewport().get_visible_rect().size
#Resize the sprite to a viewport:
$BG.scale.x = ViewPortSize.x / $BG.texture.get_size().x
$BG.scale.y = ViewPortSize.y / $BG.texture.get_size().y