diff --git a/mainwindow.cpp b/mainwindow.cpp
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -76,6 +76,11 @@ MainWindow::MainWindow(QWidget *parent) 
     QObject::connect(ui->actionUnzoom, &QAction::triggered,
                      ui->plot, &Plot::unzoom);
 
+    QObject::connect(ui->actionDarkBackground, &QAction::toggled,
+                     ui->plot, &Plot::darkBackground);
+
+    ui->plot->darkBackground(ui->actionDarkBackground->isChecked());
+
     // port control signals
     QObject::connect(&portControl, &PortControl::portToggled,
                      this, &MainWindow::onPortToggled);
diff --git a/mainwindow.ui b/mainwindow.ui
--- a/mainwindow.ui
+++ b/mainwindow.ui
@@ -476,6 +476,7 @@
     
     
     
+    
    
    
    
@@ -570,6 +571,17 @@
     Show/hide minor grid
    
   
+  
+   
+    true
+   
+   
+    Dark Background
+   
+   
+    Toggle Dark Background
+   
+  
  
  
  
diff --git a/plot.cpp b/plot.cpp
--- a/plot.cpp
+++ b/plot.cpp
@@ -28,8 +28,9 @@ Plot::Plot(QWidget* parent) :
     QObject::connect(&zoomer, &Zoomer::unzoomed, this, &Plot::unzoomed);
 
     zoomer.setZoomBase();
-    grid.setPen(Qt::lightGray);
     grid.attach(this);
+
+    darkBackground(false);
 }
 
 void Plot::setAxis(bool autoScaled, double yAxisMin, double yAxisMax)
@@ -84,3 +85,22 @@ void Plot::unzoom()
 {
     zoomer.zoom(0);
 }
+
+void Plot::darkBackground(bool enabled)
+{
+    if (enabled)
+    {
+        setCanvasBackground(QBrush(Qt::black));
+        grid.setPen(Qt::darkGray);
+        zoomer.setRubberBandPen(QPen(Qt::white));
+        zoomer.setTrackerPen(QPen(Qt::white));
+    }
+    else
+    {
+        setCanvasBackground(QBrush(Qt::white));
+        grid.setPen(Qt::lightGray);
+        zoomer.setRubberBandPen(QPen(Qt::black));
+        zoomer.setTrackerPen(QPen(Qt::black));
+    }
+    replot();
+}
diff --git a/plot.h b/plot.h
--- a/plot.h
+++ b/plot.h
@@ -41,6 +41,7 @@ public slots:
     void showGrid(bool show = true);
     void showMinorGrid(bool show = true);
     void unzoom();
+    void darkBackground(bool enabled = true);
 
 private slots:
     void unzoomed();