diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
index 1474291..511f6ed 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
@@ -375,6 +375,8 @@
 	public static final byte[] value_changed = ascii("value-changed");
 	public static final byte[] window_state_event = ascii("window-state-event");
 	public static final byte[] notify_state = ascii("notify::state");
+	public static final byte[] notify_default_height = ascii("notify::default-height");
+	public static final byte[] notify_default_width = ascii("notify::default-width");
 	public static final byte[] notify_theme_change = ascii("notify::gtk-application-prefer-dark-theme");
 	public static final byte[] response = ascii("response");
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
index 7b5e6c4..e911530 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Control.java
@@ -5519,26 +5519,26 @@
 
 void setInitialBounds () {
 	if ((state & ZERO_WIDTH) != 0 && (state & ZERO_HEIGHT) != 0) {
-		/*
-		* Feature in GTK.  On creation, each widget's allocation is
-		* initialized to a position of (-1, -1) until the widget is
-		* first sized.  The fix is to set the value to (0, 0) as
-		* expected by SWT.
-		*/
-		long topHandle = topHandle ();
-		GtkAllocation allocation = new GtkAllocation();
-		if ((parent.style & SWT.MIRRORED) != 0) {
-			allocation.x = parent.getClientWidth ();
-		} else {
-			allocation.x = 0;
-		}
-		allocation.y = 0;
-		if (mustBeVisibleOnInitBounds ()) {
-			GTK.gtk_widget_set_visible(topHandle, true);
-		}
-		if (GTK.GTK4) {
-			GTK.gtk_widget_size_allocate (topHandle, allocation, -1);
-		} else {
+		if (!GTK.GTK4) {
+			/*
+			* Feature in GTK.  On creation, each widget's allocation is
+			* initialized to a position of (-1, -1) until the widget is
+			* first sized.  The fix is to set the value to (0, 0) as
+			* expected by SWT.
+			*/
+			long topHandle = topHandle();
+
+			GtkAllocation allocation = new GtkAllocation();
+			if ((parent.style & SWT.MIRRORED) != 0) {
+				allocation.x = parent.getClientWidth();
+			} else {
+				allocation.x = 0;
+			}
+			allocation.y = 0;
+
+			if (mustBeVisibleOnInitBounds ()) {
+				GTK.gtk_widget_set_visible(topHandle, true);
+			}
 			// Prevent GTK+ allocation warnings, preferred size should be retrieved before setting allocation size.
 			GTK.gtk_widget_get_preferred_size(topHandle, null, null);
 			GTK.gtk_widget_size_allocate (topHandle, allocation);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
index 66828df..3abd86d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
@@ -933,7 +933,8 @@
 		GTK.gtk_widget_realize(shellHandle);
 		long gdkSurface = gtk_widget_get_surface (shellHandle);
 		OS.g_signal_connect (gdkSurface, OS.notify_state, display.notifyProc, shellHandle);
-		OS.g_signal_connect(handle, OS.resize, display.resizeProc, 0);
+		OS.g_signal_connect(shellHandle, OS.notify_default_height, display.notifyProc, Widget.NOTIFY_DEFAULT_HEIGHT);
+		OS.g_signal_connect(shellHandle, OS.notify_default_width, display.notifyProc, Widget.NOTIFY_DEFAULT_WIDTH);
 	} else {
 		OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [WINDOW_STATE_EVENT], 0, display.getClosure (WINDOW_STATE_EVENT), false);
 		OS.g_signal_connect_closure_by_id (shellHandle, display.signalIds [CONFIGURE_EVENT], 0, display.getClosure (CONFIGURE_EVENT), false);
@@ -1129,11 +1130,12 @@
 	if (!OS.isX11()) {
 		if (GTK.GTK4) {
 			double[] window_offset_x = new double[1], window_offset_y = new double[1];
-
 			boolean validTranslation = GTK4.gtk_widget_translate_coordinates(vboxHandle, shellHandle, 0, 0, window_offset_x, window_offset_y);
+
 			if (validTranslation && !isMappedToPopup()) {
 				allocation.x += window_offset_x[0];
 				allocation.y += window_offset_y[0];
+				allocation.height -= window_offset_y[0];
 			}
 		} else {
 			int [] dest_x = new int[1];
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
index 35c4afa..dbd0b74 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java
@@ -239,7 +239,9 @@
 	static final int NOTIFY_STATE = 102;
 	static final int SIZE_ALLOCATE_GTK4 = 103;
 	static final int DPI_CHANGED = 104;
-	static final int LAST_SIGNAL = 105;
+	static final int NOTIFY_DEFAULT_HEIGHT = 105;
+	static final int NOTIFY_DEFAULT_WIDTH = 106;
+	static final int LAST_SIGNAL = 107;
 
 	static final String IS_ACTIVE = "org.eclipse.swt.internal.control.isactive"; //$NON-NLS-1$
 	static final String KEY_CHECK_SUBWINDOW = "org.eclipse.swt.internal.control.checksubwindow"; //$NON-NLS-1$
@@ -2246,6 +2248,9 @@
 	switch ((int)user_data) {
 		case DPI_CHANGED: return dpiChanged(object, arg0);
 		case NOTIFY_STATE: return notifyState(object, arg0);
+		case NOTIFY_DEFAULT_HEIGHT:
+		case NOTIFY_DEFAULT_WIDTH:
+			return gtk_size_allocate(object, 0);
 	}
 	return 0;
 }
