### Godot version

v4.1.1.stable.official [bd6af8e0e]

### System information

Godot v4.1.1.stable - Debian GNU/Linux trixie/sid trixie - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 (nvidia) - Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz (6 Threads)

### Issue description

`Area2D`s which extend beyond the bounds of the root viewport, eg. when using a `canvas_items` stretch mode, receive mouse input events even in the black bands letterboxing the game:

https://github.com/godotengine/godot/assets/441188/3beb962f-c1fa-4098-a375-f3d862013577


### Steps to reproduce

1. Set project stretch mode to either `canvas_items` or `viewport`
2. Have an `Area2D` whose `CollisionShape` extends beyond the bounds of the rendered region
3. Connect the `Area2D`'s `mouse_[entered|exited]` signal to something
4. Wave the mouse around in the black areas outside the rendered game

### Minimal reproduction project

Project used for video demo above:

[area2d-oob.zip](https://github.com/godotengine/godot/files/12207031/area2d-oob.zip)

This only demos `mouse_[entered|exited]`, but I first encountered this with the `Area2D.input_event` signal, where it received mouse clicks as well.
final_size_override = viewport_size / content_scale_factor;
				attach_to_screen_rect = Rect2(margin, screen_size);
				font_oversampling = (screen_size.x / viewport_size.x) * content_scale_factor;
				window_transform.translate_local(margin);
			} break;
			case CONTENT_SCALE_MODE_VIEWPORT: {
				final_size = (viewport_size / content_scale_factor).floor();
				attach_to_screen_rect = Rect2(margin, screen_size);
				window_transform.translate_local(margin);
				if (final_size.x != 0 && final_size.y != 0) {
					Transform2D scale_transform;
					scale_transform.scale(Vector2(attach_to_screen_rect.size) / Vector2(final_size));
					window_transform *= scale_transform;
				}
			} break;
		}
	}
	bool allocate = is_inside_tree() && visible && (window_id != DisplayServer::INVALID_WINDOW_ID || embedder != nullptr);
	_set_size(final_size, final_size_override, allocate);
	if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		RenderingServer::get_singleton()->viewport_attach_to_screen(get_viewport_rid(), attach_to_screen_rect, window_id);
	} else {
		RenderingServer::get_singleton()->viewport_attach_to_screen(get_viewport_rid(), Rect2i(), DisplayServer::INVALID_WINDOW_ID);
	}
	if (window_id == DisplayServer::MAIN_WINDOW_ID) {
		if (!use_font_oversampling) {
			font_oversampling = 1.0;
		}
		if (TS->font_get_global_oversampling() != font_oversampling) {
			TS->font_set_global_oversampling(font_oversampling);