Could anyone help me with this camera issue? I am making a Metroidvania engine. The problem is that bottom part of vertical scrolling rooms get hidden. Camera works fine with most of the rooms (screen sized and horizontal scrolling ones), but vertical scrolling rooms don't work with my GUI thing. Basically I've divided the screen view with control nodes (vbox and margin containers): GUI block occupies upper part and the game view occupies the lower part, as can be seen on the attached picture (with and without).

Basically my rooms are 2d area nodes. Camera+player goes into different room and then camera adjusts limits accordingly on the current room. One of my friend recommended removing scale stuff (see code below, he said scaling stretch pixels which might be an issue or something?), but I couldn't get my engine working by adjusting camera limits from collision shape extents directly. For now I need the scale system in order to edit different sized rooms easily on Godot's 2d editor. I've also tried an offset system to fix the hidden part but it screws up all the in-game position coordinates etc. So I don't want to use that. Any other ideas?
Here's an example of my camera code:
extends Camera2D
var offs = 64 #offset variable...
signal room_change(pos,scl)
func _on_Area2D_area_entered(area):
var collision_shape = area.get_node("CollisionShape2D")
var size = collision_shape.shape.extents*2*area.scale
limit_top = area.position.y - size.y/2
limit_left = area.position.x - size.x/2
limit_bottom = limit_top + size.y +offs
limit_right = limit_left + size.x
emit_signal("room_change",Vector2(limit_left,limit_top),area.scale)
If needed I could try posting the project of engine itself.