diff --git a/bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/stage/ResizeableFramePane.java b/bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/stage/ResizeableFramePane.java
index 8d36003..771f0ea 100644
--- a/bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/stage/ResizeableFramePane.java
+++ b/bundles/runtime/org.eclipse.fx.ui.controls/src/org/eclipse/fx/ui/controls/stage/ResizeableFramePane.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.fx.ui.controls.stage;
 
-import org.eclipse.fx.core.Util;
+import org.eclipse.fx.core.NumberUtils;
 
 import javafx.beans.Observable;
 import javafx.beans.property.BooleanProperty;
@@ -124,7 +124,7 @@
 						case TOP:
 						{
 							double value = this.height + -1 * (int) deltaY;
-							double constraintedValue = Util.unsignedConstraintValue(
+							double constraintedValue = NumberUtils.unsignedConstraintValue(
 									value,
 									getMinHeight(),
 									getMaxHeight());
@@ -139,7 +139,7 @@
 						case BOTTOM:
 						{
 							double value = this.height + deltaY;
-							value = Util.unsignedConstraintValue(
+							value = NumberUtils.unsignedConstraintValue(
 									value,
 									getMinHeight(),
 									getMaxHeight());
@@ -149,7 +149,7 @@
 						case LEFT:
 						{
 							double value = this.width + -1 * (int) deltaX;
-							double constraintedValue = Util.unsignedConstraintValue(
+							double constraintedValue = NumberUtils.unsignedConstraintValue(
 									value,
 									getMinWidth(),
 									getMaxWidth());
@@ -165,7 +165,7 @@
 						case RIGHT:
 						{
 							double value = this.width + deltaX;
-							value = Util.unsignedConstraintValue(
+							value = NumberUtils.unsignedConstraintValue(
 									value,
 									getMinWidth(),
 									getMaxWidth());
@@ -204,7 +204,7 @@
 					if( ne.doubleValue() != -1 ) {
 						if( getScene() != null && getScene().getWindow() != null ) {
 							Window w = getScene().getWindow();
-							getScene().getWindow().setWidth(Util.unsignedConstraintValue(w.getWidth(), getMinWidth(), getMaxWidth()));
+							getScene().getWindow().setWidth(NumberUtils.unsignedConstraintValue(w.getWidth(), getMinWidth(), getMaxWidth()));
 						}
 					}
 				};
@@ -217,7 +217,7 @@
 					if( ne.doubleValue() != -1 ) {
 						if( getScene() != null && getScene().getWindow() != null ) {
 							Window w = getScene().getWindow();
-							getScene().getWindow().setHeight(Util.unsignedConstraintValue(w.getHeight(), getMinHeight(), getMaxHeight()));
+							getScene().getWindow().setHeight(NumberUtils.unsignedConstraintValue(w.getHeight(), getMinHeight(), getMaxHeight()));
 						}
 					}
 				};
