### Godot version

4.1

### System information

Fedora, RX 590

### Issue description

Between 4.0.2 release and 4.0.3 RC1 the hotzone of the visual shader nodes have shrunk on the side that overlaps the node itself.
![Screenshot from 2023-06-22 12-14-19](https://github.com/godotengine/godot/assets/7917475/255feaf2-6e8c-4e7b-a1d9-0b86f28b1ec2)


### Steps to reproduce

Download 4.0.2 release and 4.0.3-rc1. 

Open MRP, navigate to hotzone.tres shader.

Zoom out to this level of zoom: 
![image](https://github.com/godotengine/godot/assets/7917475/5a3ffd5f-7760-4ced-a6aa-7861c2c1206f)

Try to extract a pin from ColorOp node.

In 4.0.3 you can observe how if you're not very precise you will drag the node around.

### Minimal reproduction project

[hotzone.zip](https://github.com/godotengine/godot/files/11832820/hotzone.zip)

}
}
void GraphEdit::_calculate_inner_shifts(Dictionary &r_inner_shifts, const Dictionary &r_root, const Dictionary &r_node_names, const Dictionary &r_align, const HashSet<StringName> &r_block_heads, const HashMap<StringName, Pair<int, int>> &r_port_info) {
	for (const StringName &E : r_block_heads) {
		real_t left = 0;
		StringName u = E;
		StringName v = r_align[u];
		while (u != v && (StringName)r_root[u] != v) {
			String _connection = String(u) + " " + String(v);
			GraphNode *gfrom = Object::cast_to<GraphNode>(r_node_names[u]);
			GraphNode *gto = Object::cast_to<GraphNode>(r_node_names[v]);
			Pair<int, int> ports = r_port_info[_connection];
			int pfrom = ports.first;
			int pto = ports.second;
			Vector2 frompos = gfrom->get_connection_output_position(pfrom);
			Vector2 topos = gto->get_connection_input_position(pto);
			real_t s = (real_t)r_inner_shifts[u] + (frompos.y - topos.y) / zoom;
			r_inner_shifts[v] = s;
			left = MIN(left, s);
			u = v;
			v = (StringName)r_align[v];
		}
		u = E;
		do {
			r_inner_shifts[u] = (real_t)r_inner_shifts[u] - left;
			u = (StringName)r_align[u];
		} while (u != E);
	}
}
float GraphEdit::_calculate_threshold(StringName p_v, StringName p_w, const Dictionary &r_node_names, const HashMap<int, Vector<StringName>> &r_layers, const Dictionary &r_root, const Dictionary &r_align, const Dictionary &r_inner_shift, real_t p_current_threshold, const HashMap<StringName, Vector2> &r_node_positions) {