diff --git a/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/TracingPreferencePage.java b/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/TracingPreferencePage.java
index 047a317..47f9d63 100644
--- a/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/TracingPreferencePage.java
+++ b/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/TracingPreferencePage.java
@@ -313,7 +313,7 @@
 		GridDataFactory.fillDefaults().applyTo(this.tracingFileMaxCountLabel);
 		// add the 'max count' input field
 		this.maximumFileCountSpinner = new Spinner(detailsComp, SWT.SINGLE | SWT.BORDER);
-		this.maximumFileCountSpinner.setValues(10, 10, 100, 0, 5, 10);
+		this.maximumFileCountSpinner.setValues(PreferenceHandler.DEFAULT_FILE_COUNT, 1, 100, 0, 5, 10);
 		this.maximumFileCountSpinner.addListener(SWT.Verify, new Listener() {
 
 			public void handleEvent(final Event e) {
@@ -333,7 +333,7 @@
 //		GridDataFactory.fillDefaults().align(SWT.END, SWT.BEGINNING).applyTo(this.tracingFileMaxSizeLabel);
 		// add the 'max size' input field
 		this.maximumFileSizeSpinner = new Spinner(detailsComp, SWT.SINGLE | SWT.BORDER);
-		this.maximumFileSizeSpinner.setValues(100, 100, 10000, 0, 100, 1000);
+		this.maximumFileSizeSpinner.setValues(PreferenceHandler.DEFAULT_FILE_SIZE, 0, 10000, 0, 100, 1000);
 		this.maximumFileSizeSpinner.addListener(SWT.Verify, new Listener() {
 
 			public void handleEvent(final Event e) {
diff --git a/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/utils/PreferenceHandler.java b/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/utils/PreferenceHandler.java
index b005d47..9cf7225 100644
--- a/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/utils/PreferenceHandler.java
+++ b/ui/org.eclipse.ui.trace/src/org/eclipse/ui/trace/internal/utils/PreferenceHandler.java
@@ -23,6 +23,9 @@
 @SuppressWarnings("deprecation")
 public class PreferenceHandler extends AbstractPreferenceInitializer {
 
+	public static final int DEFAULT_FILE_COUNT = 10;
+	public static final int DEFAULT_FILE_SIZE = 100;
+
 	@Override
 	public void initializeDefaultPreferences() {
 
@@ -166,7 +169,7 @@
 		final IScopeContext[] lookupOrder = new IScopeContext[] {new InstanceScope()};
 		IPreferencesService prefService = Platform.getPreferencesService();
 		prefService.setDefaultLookupOrder(TracingConstants.BUNDLE_ID, null, new String[] {InstanceScope.SCOPE});
-		int maxCount = prefService.getInt(TracingConstants.BUNDLE_ID, TracingConstants.PREFERENCE_MAX_FILE_COUNT_IDENTIFIER, 10, lookupOrder);
+		int maxCount = prefService.getInt(TracingConstants.BUNDLE_ID, TracingConstants.PREFERENCE_MAX_FILE_COUNT_IDENTIFIER, DEFAULT_FILE_COUNT, lookupOrder);
 		if (TracingUIActivator.DEBUG_PREFERENCES) {
 			TRACE.traceExit(TracingConstants.TRACE_PREFERENCES_STRING, Integer.valueOf(maxCount));
 		}
@@ -186,7 +189,7 @@
 		final IScopeContext[] lookupOrder = new IScopeContext[] {new InstanceScope()};
 		IPreferencesService prefService = Platform.getPreferencesService();
 		prefService.setDefaultLookupOrder(TracingConstants.BUNDLE_ID, null, new String[] {InstanceScope.SCOPE});
-		int maxSize = prefService.getInt(TracingConstants.BUNDLE_ID, TracingConstants.PREFERENCE_MAX_FILE_SIZE_IDENTIFIER, 1000, lookupOrder);
+		int maxSize = prefService.getInt(TracingConstants.BUNDLE_ID, TracingConstants.PREFERENCE_MAX_FILE_SIZE_IDENTIFIER, DEFAULT_FILE_SIZE, lookupOrder);
 		if (TracingUIActivator.DEBUG_PREFERENCES) {
 			TRACE.traceExit(TracingConstants.TRACE_PREFERENCES_STRING, Integer.valueOf(maxSize));
 		}
