diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/service/DataSeriesXYGraphCoordinator.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/service/DataSeriesXYGraphCoordinator.java
index ea5e8d4..889e950 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/service/DataSeriesXYGraphCoordinator.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/service/DataSeriesXYGraphCoordinator.java
@@ -16,8 +16,6 @@
 
 import org.eclipse.papyrus.moka.datavisualization.profile.DataSource;
 import org.eclipse.papyrus.moka.datavisualization.profile.ValueSeries;
-import org.eclipse.papyrus.moka.datavisualization.profile.VisualizationPackage;
-import org.eclipse.papyrus.moka.datavisualization.profile.impl.DoubleSeriesImpl;
 import org.eclipse.papyrus.moka.datavisualization.ui.GraphBuilderHelper;
 import org.eclipse.papyrus.moka.xygraph.mapping.common.Variable;
 import org.eclipse.papyrus.moka.xygraph.mapping.common.Variable.VariableID;
@@ -47,6 +45,8 @@
 		synchronizeTracesVisibility();
 		
 		DataVisualizationService.getInstance().pullAllData(this);
+		
+		rescaleAxesIfNeeded();
 	}
 
 	private VariableDataEntry makeEntryFor(VariableID id, TraceDescriptor tDesc){
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/service/DataVisualizationService.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/service/DataVisualizationService.java
index 9dfd531..6ba18f7 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/service/DataVisualizationService.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/service/DataVisualizationService.java
@@ -228,7 +228,11 @@
 	}
 	
 	public Variable getVariable(ValueSeries series){
-		return varTable.getEntry( new DataSourceVariableID(series) ).getVariable();
+		VariableEntry entry = varTable.getEntry(new DataSourceVariableID(series));
+		if( entry == null )
+			return null;
+		
+		return entry.getVariable();
 	}
 
 	public void removeDataPort(DataPort port) {
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/ui/GraphBuilderHelper.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/ui/GraphBuilderHelper.java
index c12ca9f..3dbbce5 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/ui/GraphBuilderHelper.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.datavisualization.ui/src/org/eclipse/papyrus/moka/datavisualization/ui/GraphBuilderHelper.java
@@ -125,17 +125,29 @@
 		
 		//The independent variable
 		AxisDescriptor xAxis = XYGraphFactory.eINSTANCE.createAxisDescriptor();
+		
+		xAxis.setAutoScale(false);
+		xAxis.setRangeLower(1);
+		xAxis.setRangeUpper(-1);
+		
 		xAxis.setOrientation(LinearScale_Orientation.HORIZONTAL);
 		xAxis.setTitle(ind.getBase_Property().getLabel());		
 		xAxis.setFont(makeFontDescriptor("Segoe UI", 12, SWT.NORMAL));
-		xAxis.setTitleFont(makeFontDescriptor("Segoe UI", 12, SWT.NORMAL));		
+		xAxis.setTitleFont(makeFontDescriptor("Segoe UI", 12, SWT.NORMAL));
+		
 		xy.getAxisDescriptors().add(xAxis);
 
 		AxisDescriptor yAxis = XYGraphFactory.eINSTANCE.createAxisDescriptor();
+		
+		yAxis.setAutoScale(false);
+		yAxis.setRangeLower(1);
+		yAxis.setRangeUpper(-1);
+		
 		yAxis.setOrientation(LinearScale_Orientation.VERTICAL);
 		yAxis.setTitle("Values"); //TODO This might be controlled from the dataSource object? dataSource.getBase_DataType().getLabel()
 		yAxis.setFont(makeFontDescriptor("Segoe UI", 12, SWT.NORMAL));
 		yAxis.setTitleFont(makeFontDescriptor("Segoe UI", 12, SWT.NORMAL));
+		
 		xy.getAxisDescriptors().add(yAxis);
 
 		//Only for the dependent
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.common/src/org/eclipse/papyrus/moka/xygraph/common/ui/XYGraphEditorPart.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.common/src/org/eclipse/papyrus/moka/xygraph/common/ui/XYGraphEditorPart.java
index ebe3552..f99a0f9 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.common/src/org/eclipse/papyrus/moka/xygraph/common/ui/XYGraphEditorPart.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.common/src/org/eclipse/papyrus/moka/xygraph/common/ui/XYGraphEditorPart.java
@@ -86,6 +86,7 @@
 	protected ToolbarArmedXYGraph buildGraphFromModel(){
 		IXYGraph xyGraph = coordinator.buildXYGraph();
 		xyGraph.addPropertyChangeListener(IXYGraph.PROPERTY_CONFIG, this);
+		xyGraph.addPropertyChangeListener(IXYGraph.PROPERTY_ZOOMTYPE, this);
 		return new ToolbarArmedXYGraph(xyGraph);
 	}
 
@@ -96,10 +97,15 @@
 
 	@Override
 	public void propertyChange(PropertyChangeEvent evt) {
-		XYGraphDescriptor gDesc = coordinator.getXYGraphDescriptor();
-		gDesc.getContext();
-		coordinator.updateDescriptors((XYGraph) evt.getNewValue());
-		lblProvider.onGraphUpdated(gDesc);
-		dirty = true;
+		//It's also possible to react to changes of IXYGraph.PROPERTY_ZOOMTYPE 
+		//and IXYGraph.PROPERTY_XY_GRAPH_MEM   
+		
+		if( IXYGraph.PROPERTY_CONFIG.equals(evt.getPropertyName()) ) {
+			XYGraphDescriptor gDesc = coordinator.getXYGraphDescriptor();
+			gDesc.getContext();
+			coordinator.updateDescriptors((XYGraph) evt.getNewValue());
+			lblProvider.onGraphUpdated(gDesc);
+			dirty = true;
+		}
 	}
 }
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/DefaultXYGraphBinder.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/DefaultXYGraphBinder.java
index a355bf5..bafa948 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/DefaultXYGraphBinder.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/DefaultXYGraphBinder.java
@@ -22,6 +22,7 @@
 import org.eclipse.papyrus.moka.xygraph.mapping.util.DataBatch;
 import org.eclipse.papyrus.moka.xygraph.mapping.util.LUT;
 import org.eclipse.papyrus.moka.xygraph.mapping.util.LightDataProvider;
+import org.eclipse.papyrus.moka.xygraph.mapping.util.TraceDataBounds;
 import org.eclipse.papyrus.moka.xygraph.model.xygraph.AxisDescriptor;
 import org.eclipse.papyrus.moka.xygraph.model.xygraph.LinearScale_Orientation;
 import org.eclipse.papyrus.moka.xygraph.model.xygraph.TraceDescriptor;
@@ -155,7 +156,7 @@
 	public void setTraceData(TraceDescriptor tDesc, DataBatch x, DataBatch y) {
 		getProviderOf(tDesc).setDataList(x.getValues(), y.getValues());		
 	}
-
+	
 	@Override
 	public void bindXYGraph(XYGraph xy) {
 		this.xyGraph = xy;
@@ -177,4 +178,10 @@
 		axisMap.dispose();
 		traceMap.dispose();
 	}
+
+	@Override
+	public TraceDataBounds getTraceDataBounds(TraceDescriptor tDesc) {
+		return getProviderOf(tDesc).getBounds();
+	}
+
 }
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphCoordinator.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphCoordinator.java
index 1cc3309..c1c0983 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphCoordinator.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphCoordinator.java
@@ -22,6 +22,9 @@
 import org.eclipse.nebula.visualization.xygraph.figures.IXYGraph;
 import org.eclipse.nebula.visualization.xygraph.figures.Trace;
 import org.eclipse.nebula.visualization.xygraph.figures.XYGraph;
+import org.eclipse.nebula.visualization.xygraph.linearscale.Range;
+import org.eclipse.papyrus.moka.xygraph.mapping.util.BaseAxisListener;
+import org.eclipse.papyrus.moka.xygraph.mapping.util.TraceDataBounds;
 import org.eclipse.papyrus.moka.xygraph.mapping.writing.ModelWritingStrategyFactory;
 import org.eclipse.papyrus.moka.xygraph.model.xygraph.AxisDescriptor;
 import org.eclipse.papyrus.moka.xygraph.model.xygraph.TraceDescriptor;
@@ -65,10 +68,19 @@
 		
 		//2.1. The axes need the graph before the traces.
 		for( AxisDescriptor aDesc : gDesc.getAxisDescriptors() ){
+			Axis axis = graphMap.getAxisFor(aDesc);
+			//Listen range changes
+			axis.addListener(new BaseAxisListener(){
+				@Override
+				public void axisRangeChanged(Axis axis, Range old_range, Range new_range) {
+					onAxisRangeChanged( axis, old_range, new_range );
+				}
+			});
+			
 			if( graphMap.isPrimary(aDesc) )
 				continue;
-			
-			xy.addAxis(graphMap.getAxisFor(aDesc));
+
+			xy.addAxis(axis);
 		}
 		
 		//3. Build and add the traces
@@ -160,13 +172,59 @@
 	}
 
 	public void onModelUpdate(Notification notification) {
-		System.out.println(notification.getFeature());
+		//System.out.println(notification.getFeature());
+		
 		if( XYGraphPackage.eINSTANCE.getXYGraphDescriptor_VisibleTraces().equals(notification.getFeature()) ){
 			synchronizeTracesVisibility();
 		}
+		
+		//Apply the changes to the XYGraph (Figure)  
+		//Currently manual, we might want to change everything later?
+		if( XYGraphPackage.eINSTANCE.getXYGraphDescriptor_Title().equals(notification.getFeature()) ){
+			graphMap.getXYGraph().setTitle(notification.getNewStringValue());
+		}
+	}
+	
+	protected void onAxisRangeChanged(Axis axis, Range old_range, Range new_range) {
+		
+		AxisDescriptor aDesc = graphMap.getDescriptorFor(axis);
+		//aDesc.setRangeLower(new_range.getLower());
+		//aDesc.setRangeUpper(new_range.getUpper());
+		
+		//Update the range in the axis?
+		factory.getAxisUpdateStrategy().updateAxisDescriptor(axis, graphMap);
+		System.out.println("Updated axis Range: " + aDesc.getRangeLower() + ", " + aDesc.getRangeUpper());
 	}
 
 	public void dispose() {
 		graphMap.dispose();
 	}
+	
+	public void rescaleAxesIfNeeded(){
+		AxisDescriptor xPrimary = graphMap.getDescriptorFor(graphMap.getXAxisPrimary());
+		AxisDescriptor yPrimary = graphMap.getDescriptorFor(graphMap.getYAxisPrimary());
+		
+		if( xPrimary.getRangeLower() < xPrimary.getRangeUpper() && yPrimary.getRangeLower() < yPrimary.getRangeUpper() )
+			return; //not needed.
+		
+		forceAxesRescale();
+		
+	}
+	
+	public void forceAxesRescale(){
+		
+		//System.out.println("Forcing re-scale");
+		
+		TraceDataBounds dataBounds = new TraceDataBounds();
+		
+		for( TraceDescriptor tDesc : graphMap.getTraceDescriptors() )
+			dataBounds.union( graphMap.getTraceDataBounds(tDesc) );
+		
+		graphMap.getXAxisPrimary().setRange(dataBounds.getxMin(), dataBounds.getxMax());
+		graphMap.getYAxisPrimary().setRange(dataBounds.getyMin(), dataBounds.getyMax());
+		
+		factory.getAxisUpdateStrategy().updateAxisDescriptor(graphMap.getXAxisPrimary(), graphMap);
+		factory.getAxisUpdateStrategy().updateAxisDescriptor(graphMap.getYAxisPrimary(), graphMap);
+		
+	}
 }
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphDataBinder.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphDataBinder.java
index 42879ae..34a8538 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphDataBinder.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphDataBinder.java
@@ -15,9 +15,11 @@
 package org.eclipse.papyrus.moka.xygraph.mapping.common;
 
 import org.eclipse.papyrus.moka.xygraph.mapping.util.DataBatch;
+import org.eclipse.papyrus.moka.xygraph.mapping.util.TraceDataBounds;
 import org.eclipse.papyrus.moka.xygraph.model.xygraph.TraceDescriptor;
 
 public interface XYGraphDataBinder {
 	void addTraceSample(TraceDescriptor tDesc, double x, double y);
 	void setTraceData(TraceDescriptor tDesc, DataBatch x, DataBatch y);
+	TraceDataBounds getTraceDataBounds(TraceDescriptor tDesc);
 }
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphWidgetBinder.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphWidgetBinder.java
index e3c3dd8..0eb9f1e 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphWidgetBinder.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/common/XYGraphWidgetBinder.java
@@ -39,7 +39,6 @@
 	TraceDescriptor getDescriptorFor(Trace trace);
 	boolean isTraceMapped(TraceDescriptor tDesc);
 	
-	
 	Axis getXAxisPrimary();
 	Axis getYAxisPrimary();
 
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/BaseAxisListener.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/BaseAxisListener.java
new file mode 100644
index 0000000..7cd1239
--- /dev/null
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/BaseAxisListener.java
@@ -0,0 +1,60 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  David LOPEZ BETANCUR (CEA LIST)
+ *  Sebastien REVOL (CEA LIST)
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.moka.xygraph.mapping.util;
+
+import org.eclipse.nebula.visualization.xygraph.figures.Axis;
+import org.eclipse.nebula.visualization.xygraph.figures.IAxisListener;
+import org.eclipse.nebula.visualization.xygraph.linearscale.Range;
+import org.eclipse.swt.graphics.Color;
+
+public class BaseAxisListener implements IAxisListener{
+
+	@Override
+	public void axisRangeChanged(Axis axis, Range old_range, Range new_range) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void axisRevalidated(Axis axis) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void axisForegroundColorChanged(Axis axis, Color oldColor, Color newColor) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void axisTitleChanged(Axis axis, String oldTitle, String newTitle) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void axisAutoScaleChanged(Axis axis, boolean oldAutoScale, boolean newAutoScale) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void axisLogScaleChanged(Axis axis, boolean old, boolean logScale) {
+		// TODO Auto-generated method stub
+		
+	}
+
+}
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/LightDataProvider.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/LightDataProvider.java
index 06a7af2..4e1e677 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/LightDataProvider.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/LightDataProvider.java
@@ -27,9 +27,13 @@
 	private List<LightDataSample> samples = new ArrayList<>();
 	
 	private boolean dataRangedirty; 
-		
+	
+	//private double xMin, xMax, yMin, yMax;
+	private TraceDataBounds bounds;
+	
 	public LightDataProvider(boolean chronological) {
 		super(chronological);
+		bounds = new TraceDataBounds();
 	}
 
 	public void setDataList(List<Double> xl, List<Double> yl) {
@@ -45,23 +49,18 @@
 
 		samples = new ArrayList<LightDataSample>();
 
-		double xMin = Float.POSITIVE_INFINITY, xMax = Float.NEGATIVE_INFINITY, yMin = Float.POSITIVE_INFINITY,
-				yMax = Float.NEGATIVE_INFINITY;
+		bounds.reset();
 
 		for (int i = 0; i < xl.size(); i++) {
 
 			double x = xl.get(i);
 			double y = yl.get(i);
 
-			xMin = Math.min(xMin, x);
-			xMax = Math.max(xMax, x);
-			yMin = Math.min(yMin, y);
-			yMax = Math.max(yMax, y);
-
+			bounds.addSample(x, y);
 			samples.add(new LightDataSample(this, i));
 		}
-		xDataMinMax = new Range(xMin, yMax);
-		yDataMinMax = new Range(yMin, yMax);
+		xDataMinMax = new Range(bounds.getxMin(), bounds.getxMax());
+		yDataMinMax = new Range(bounds.getyMin(), bounds.getyMax());
 
 		fireDataChange();
 
@@ -120,12 +119,12 @@
 
 			double xMin;
 			double xMax;
-			xMin = getSample(lowerBound).getXValue();
+			xMin = getXValue(lowerBound);//getSample(lowerBound).getXValue();
 			xMax = xMin;
 
 			double yMin;
 			double yMax;
-			yMin = getSample(lowerBound).getYValue();
+			yMin = getYValue(lowerBound);//getSample(lowerBound).getYValue();
 			yMax = yMin;
 
 			for (int i = lowerBound + 1; i < getSize(); i++) {
@@ -163,4 +162,8 @@
 		xValues = null;
 		yValues = null;
 	}
+
+	public TraceDataBounds getBounds() {
+		return bounds;
+	}
 }
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/TraceDataBounds.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/TraceDataBounds.java
new file mode 100644
index 0000000..b89a99b
--- /dev/null
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/util/TraceDataBounds.java
@@ -0,0 +1,75 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  David LOPEZ BETANCUR (CEA LIST)
+ *  Sebastien REVOL (CEA LIST)
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.moka.xygraph.mapping.util;
+
+public class TraceDataBounds {
+	private double xMin, yMin, xMax, yMax;
+	
+	public TraceDataBounds() {
+		reset();
+	}
+
+	public void reset(){
+		yMin = xMin = Double.POSITIVE_INFINITY;
+		yMax = xMax = Double.NEGATIVE_INFINITY;
+		
+	}
+	
+	public void addSample(double x, double y){
+		xMax = Math.max(xMax, x);
+		yMax = Math.max(yMax, y);
+		xMin = Math.min(xMin, x);
+		yMin = Math.min(yMin, y);
+	}
+	
+	public void union( TraceDataBounds o ){
+		xMax = Math.max(xMax, o.xMax);
+		yMax = Math.max(yMax, o.yMax);
+		xMin = Math.min(xMin, o.xMin);
+		yMin = Math.min(yMin, o.yMin);
+	}
+	
+	public double getxMin() {
+		return xMin;
+	}
+
+	public void setxMin(double xMin) {
+		this.xMin = xMin;
+	}
+
+	public double getyMin() {
+		return yMin;
+	}
+
+	public void setyMin(double yMin) {
+		this.yMin = yMin;
+	}
+
+	public double getxMax() {
+		return xMax;
+	}
+
+	public void setxMax(double xMax) {
+		this.xMax = xMax;
+	}
+
+	public double getyMax() {
+		return yMax;
+	}
+
+	public void setyMax(double yMax) {
+		this.yMax = yMax;
+	}
+}
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/writing/impl/DefaultAxisBuildStrategy.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/writing/impl/DefaultAxisBuildStrategy.java
index fbbc7f4..b88f216 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/writing/impl/DefaultAxisBuildStrategy.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/writing/impl/DefaultAxisBuildStrategy.java
@@ -15,11 +15,11 @@
 package org.eclipse.papyrus.moka.xygraph.mapping.writing.impl;
 
 import org.eclipse.nebula.visualization.xygraph.figures.Axis;
+import org.eclipse.papyrus.moka.xygraph.mapping.common.XYGraphMappingHelper;
+import org.eclipse.papyrus.moka.xygraph.mapping.common.XYGraphWidgetBinder;
+import org.eclipse.papyrus.moka.xygraph.mapping.writing.AxisBuildStrategy;
 import org.eclipse.papyrus.moka.xygraph.model.xygraph.AxisDescriptor;
 import org.eclipse.papyrus.moka.xygraph.model.xygraph.LinearScale_Orientation;
-import org.eclipse.papyrus.moka.xygraph.mapping.common.XYGraphWidgetBinder;
-import org.eclipse.papyrus.moka.xygraph.mapping.common.XYGraphMappingHelper;
-import org.eclipse.papyrus.moka.xygraph.mapping.writing.AxisBuildStrategy;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.widgets.Display;
 
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/writing/impl/DefaultAxisUpdateStrategy.java b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/writing/impl/DefaultAxisUpdateStrategy.java
index 8f61e0e..4a0638b 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/writing/impl/DefaultAxisUpdateStrategy.java
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.mapping/src/org/eclipse/papyrus/moka/xygraph/mapping/writing/impl/DefaultAxisUpdateStrategy.java
@@ -36,7 +36,7 @@
 		aDesc.setMajorGridColor(XYGraphMappingHelper.mapColor(axis.getMajorGridColor()));
 		aDesc.setMinorGridColor(XYGraphMappingHelper.mapColor(axis.getMinorGridColor()));
 		aDesc.setRangeUpper(axis.getRange().getUpper());
-		aDesc.setRangeLower( axis.getRange().getLower());
+		aDesc.setRangeLower(axis.getRange().getLower());
 		
 		//** Strangely there's no getZoomType() method.
 		//** aDesc.setZoomType(descZoomType(axis.getZoomType())));
diff --git a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.properties/properties/ui/SingleXYGraphDescriptor.xwt b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.properties/properties/ui/SingleXYGraphDescriptor.xwt
index c1cdaf8..59b2da9 100644
--- a/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.properties/properties/ui/SingleXYGraphDescriptor.xwt
+++ b/bundles/core/tools/visualization/org.eclipse.papyrus.moka.xygraph.properties/properties/ui/SingleXYGraphDescriptor.xwt
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<Composite
-	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
-	xmlns="http://www.eclipse.org/xwt/presentation"
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:j="clr-namespace:java.lang" xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
 	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
-	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt">
+	xmlns:x="http://www.eclipse.org/xwt">
 	<Composite.layout>
 		<ppel:PropertiesLayout></ppel:PropertiesLayout>
 	</Composite.layout>
@@ -11,6 +10,8 @@
 		<Composite.layout>
 			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
 		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="xygraph:XYGraphDescriptor:title"></ppe:StringEditor>
 		<ppe:MultiReference input="{Binding}"
 			property="xygraph:XYGraphDescriptor:visibleTraces"></ppe:MultiReference>
 	</Composite>
