diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ShapeStyle.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ShapeStyle.java
index cdbe88d..86f286c 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ShapeStyle.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ShapeStyle.java
@@ -417,7 +417,7 @@
 	}
 	
 	public int getDefaultWidth() {
-		if (defaultWidth<=0) {
+		if (defaultWidth<0) {
 			if (object.toLowerCase().contains("gateway")) //$NON-NLS-1$
 				return 50;
 			if (object.toLowerCase().contains("event")) //$NON-NLS-1$
@@ -431,15 +431,15 @@
 		return defaultWidth;
 	}
 
-	public void setDefaultWidth(int defaultWidth) {
-		if (this.defaultWidth!=defaultWidth) {
-			this.defaultWidth = defaultWidth;
+	public void setDefaultWidth(int newWidth) {
+		if (this.defaultWidth != newWidth) {
+			this.defaultWidth = newWidth;
 			changeMask |= SS_DEFAULT_WIDTH;
 		}
 	}
 	
 	public int getDefaultHeight() {
-		if (defaultHeight<=0) {
+		if (defaultHeight<0) {
 			if (object.toLowerCase().contains("gateway")) //$NON-NLS-1$
 				return 50;
 			if (object.toLowerCase().contains("event")) //$NON-NLS-1$
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DefaultBPMN2Editor.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DefaultBPMN2Editor.java
index c3b39f2..f3df455 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DefaultBPMN2Editor.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DefaultBPMN2Editor.java
@@ -831,6 +831,7 @@
 					ga.setForeground(gaService.manageColor(diagram, ss.getShapeForeground()));
 					refresh();
 					getGraphicalControl().redraw();
+					getGraphicalControl().getDisplay().update();
 				}
 			});
 		}
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2EditorAppearancePreferencePage.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2EditorAppearancePreferencePage.java
index 062bad9..ca60547 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2EditorAppearancePreferencePage.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2EditorAppearancePreferencePage.java
@@ -650,6 +650,7 @@
 		catch(Exception e) {
 		}
 		super.performDefaults();
+		Display.getDefault().update();
 	}
 
 	@Override
@@ -1070,14 +1071,16 @@
 
 		@Override
 		public Integer getValue() {
-			if (text!=null) {
-				return Integer.parseInt(text.getText());
+			if (text != null) {
+				String textVal = text.getText();
+				if (!textVal.isEmpty())
+					return Integer.parseInt(textVal);
 			}
 			return -1;
 		}
 
 		public void setValue(int value) {
-			if (text!=null) {
+			if (text != null) {
 				text.setText(Integer.toString(value, 10));
 			}
 		}
