diff --git a/Code/qtiplot/qtiplot/src/ApplicationWindow.cpp b/Code/qtiplot/qtiplot/src/ApplicationWindow.cpp
index 1e573e766fb97085b06c8800340291b5f8005bc6..8d19183ce1853b270fe4340472eef7085a1cef3d 100644
--- a/Code/qtiplot/qtiplot/src/ApplicationWindow.cpp
+++ b/Code/qtiplot/qtiplot/src/ApplicationWindow.cpp
@@ -577,6 +577,9 @@ void ApplicationWindow::initGlobalConstants()
 	canvasFrameWidth = 0;
 	defaultPlotMargin = 0;
 	drawBackbones = true;
+  xLogNotLin = true;
+  yLogNotLin = true;
+  zLogNotLin = true;
 	axesLineWidth = 1;
 	autoscale2DPlots = true;
 	autoScaleFonts = true;
@@ -2614,6 +2617,7 @@ void ApplicationWindow::setPreferences(Graph* g)
 		g->setTicksLength (minTicksLength, majTicksLength);
 		g->setAxesLinewidth(axesLineWidth);
 		g->drawAxesBackbones(drawBackbones);
+//    need to call the plot functions for log/linear, errorbars and distribution stuff
 	}
 
 	g->initFonts(plotAxesFont, plotNumbersFont);
@@ -4680,6 +4684,9 @@ void ApplicationWindow::readSettings()
 	canvasFrameWidth = settings.value("/CanvasFrameWidth", 0).toInt();
 	defaultPlotMargin = settings.value("/Margin", 0).toInt();
 	drawBackbones = settings.value("/AxesBackbones", true).toBool();
+  xLogNotLin = settings.value("/AxisXLog", false).toBool();
+  yLogNotLin = settings.value("/AxisYLog", false).toBool();
+  zLogNotLin = settings.value("/AxisZLog", false).toBool();
 	axesLineWidth = settings.value("/AxesLineWidth", 1).toInt();
 	autoscale2DPlots = settings.value("/Autoscale", true).toBool();
 	autoScaleFonts = settings.value("/AutoScaleFonts", true).toBool();
@@ -4980,6 +4987,9 @@ void ApplicationWindow::saveSettings()
 	settings.setValue("/CanvasFrameWidth", canvasFrameWidth);
 	settings.setValue("/Margin", defaultPlotMargin);
 	settings.setValue("/AxesBackbones", drawBackbones);
+  settings.setValue("/AxisXLog", xLogNotLin);
+  settings.setValue("/AxisYLog", yLogNotLin);
+  settings.setValue("/AxisZLog", zLogNotLin);
 	settings.setValue("/AxesLineWidth", axesLineWidth);
 	settings.setValue("/Autoscale", autoscale2DPlots);
 	settings.setValue("/AutoScaleFonts", autoScaleFonts);
@@ -9109,6 +9119,8 @@ void ApplicationWindow::showGraphContextMenu()
     return;
   }
 
+	QMenu axes(this);
+	QMenu colour(this);
 	QMenu exports(this);
 	QMenu copy(this);
 	QMenu prints(this);
@@ -9139,6 +9151,17 @@ void ApplicationWindow::showGraphContextMenu()
 		cm.insertItem(QPixmap(paste_xpm), tr("&Paste Image"), plot, SIGNAL(pasteMarker()));
 	}
 	cm.insertSeparator();
+	axes.insertItem(tr("Lo&g(x),Log(y)"), ag, SLOT(logLogAxes()));
+	axes.insertItem(tr("Log(&x),Linear(y)"), ag, SLOT(logXLinY()));
+	axes.insertItem(tr("Linear(x),Log(&y)"), ag, SLOT(logYlinX()));
+	axes.insertItem(tr("&Linear(x),Linear(y)"), ag, SLOT(linearAxes()));
+	cm.insertItem(tr("&Axes"), &axes);
+
+	colour.insertItem(tr("Lo&g Scale"), ag, SLOT(logColor()));
+	colour.insertItem(tr("&Linear"), ag, SLOT(linColor()));
+	cm.insertItem(tr("&Color Bar"), &colour);
+
+  cm.insertSeparator();
 	copy.insertItem(tr("&Layer"), this, SLOT(copyActiveLayer()));
 	copy.insertItem(tr("&Window"), plot, SLOT(copyAllLayers()));
 	cm.insertItem(QPixmap(copy_xpm), tr("&Copy"), &copy);
diff --git a/Code/qtiplot/qtiplot/src/ApplicationWindow.h b/Code/qtiplot/qtiplot/src/ApplicationWindow.h
index 31c147f4ace6910f88887b87fc84cb01648a5ff3..7d163b9aa42897a1c1c01da09ee9285ce9c1a877 100644
--- a/Code/qtiplot/qtiplot/src/ApplicationWindow.h
+++ b/Code/qtiplot/qtiplot/src/ApplicationWindow.h
@@ -1165,6 +1165,7 @@ public:
 	bool confirmCloseTable, confirmCloseMatrix, confirmClosePlot2D, confirmClosePlot3D,confirmCloseInstrWindow;
 	bool confirmCloseFolder, confirmCloseNotes;
 	bool titleOn, autoSave, drawBackbones, allAxesOn, autoscale2DPlots, antialiasing2DPlots;
+  bool xLogNotLin, yLogNotLin, zLogNotLin;
 	int majTicksStyle, minTicksStyle, legendFrameStyle, autoSaveTime, axesLineWidth, canvasFrameWidth;
 	QColor legendBackground, legendTextColor, defaultArrowColor;
 	int defaultArrowHeadLength, defaultArrowHeadAngle;
diff --git a/Code/qtiplot/qtiplot/src/Graph.cpp b/Code/qtiplot/qtiplot/src/Graph.cpp
index 9f3379a1bfb89def2920467d29311256dc55bb3e..b35ab3388c0769c71d167bb3b7f241ce1b9ec735 100644
--- a/Code/qtiplot/qtiplot/src/Graph.cpp
+++ b/Code/qtiplot/qtiplot/src/Graph.cpp
@@ -1312,6 +1312,18 @@ void Graph::linearAxes()
   notifyChanges();
 }
 
+void Graph::logColor()
+{
+	setScale(QwtPlot::yRight, QwtScaleTransformation::Log10);
+  notifyChanges();
+}
+
+void Graph::linColor()
+{
+	setScale(QwtPlot::yRight, QwtScaleTransformation::Linear);
+  notifyChanges();
+}
+
 void Graph::setAxisScale(int axis, double start, double end, int type, double step,
 				  int majorTicks, int minorTicks)
 {
diff --git a/Code/qtiplot/qtiplot/src/Graph.h b/Code/qtiplot/qtiplot/src/Graph.h
index 13d4c09e2dd0919bd9a35c9c130d2e5a5128cd90..13d2f53ba0f3f38f50bb0f5af20461b38051f776 100644
--- a/Code/qtiplot/qtiplot/src/Graph.h
+++ b/Code/qtiplot/qtiplot/src/Graph.h
@@ -336,7 +336,10 @@ public slots:
   void logYlinX();
   /// set both the x and y axes to linear
   void linearAxes();
-
+  /// set a log scale for the color bar
+  void logColor();
+  /// change the color bar to use a linear scale
+  void linColor();
   //! \name Curves Layout
   //@{
   CurveLayout initCurveLayout(int style, int curves = 0);