diff --git a/pcbnew/dialogs/dialog_plot.cpp b/pcbnew/dialogs/dialog_plot.cpp
index 79cc715b67..723127975b 100644
--- a/pcbnew/dialogs/dialog_plot.cpp
+++ b/pcbnew/dialogs/dialog_plot.cpp
@@ -113,7 +113,7 @@ DIALOG_PLOT::DIALOG_PLOT( PCB_EDIT_FRAME* aEditFrame, wxWindow* aParent,
     {
         SetTitle( aJob->GetSettingsDialogTitle() );
 
-        PCB_PLOTTER::PlotJobToPlotOpts( m_plotOpts, m_job );
+        PCB_PLOTTER::PlotJobToPlotOpts( m_plotOpts, m_job, m_messagesPanel->Reporter() );
         m_messagesPanel->Hide();
 
         m_browseButton->Hide();
diff --git a/pcbnew/pcb_plotter.cpp b/pcbnew/pcb_plotter.cpp
index 54675db666..8306d56d82 100644
--- a/pcbnew/pcb_plotter.cpp
+++ b/pcbnew/pcb_plotter.cpp
@@ -325,7 +325,8 @@ LSEQ PCB_PLOTTER::getPlotSequence( PCB_LAYER_ID aLayerToPlot, LSEQ aPlotWithAllL
 }
 
 
-void PCB_PLOTTER::PlotJobToPlotOpts( PCB_PLOT_PARAMS& aOpts, JOB_EXPORT_PCB_PLOT* aJob )
+void PCB_PLOTTER::PlotJobToPlotOpts( PCB_PLOT_PARAMS& aOpts, JOB_EXPORT_PCB_PLOT* aJob,
+                                     REPORTER& aReporter )
 {
     if( aJob->m_plotFormat == JOB_EXPORT_PCB_PLOT::PLOT_FORMAT::GERBER )
     {
@@ -408,15 +409,26 @@ void PCB_PLOTTER::PlotJobToPlotOpts( PCB_PLOT_PARAMS& aOpts, JOB_EXPORT_PCB_PLOT
         break;
     }
 
-
     SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
     wxString          theme = aJob->m_colorTheme;
 
+    // Theme may be empty when running from a job in GUI context, so use the GUI settings.
     if( theme.IsEmpty() )
-        theme = wxT( "pcbnew" );
+    {
+        PCBNEW_SETTINGS* pcbSettings = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
+        theme = pcbSettings->m_ColorTheme;
+    }
 
-    PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( theme );
-    aOpts.SetColorSettings( mgr.GetColorSettings( cfg->m_ColorTheme ) );
+    COLOR_SETTINGS* colors = mgr.GetColorSettings( aJob->m_colorTheme );
 
+    if( colors->GetFilename() != theme )
+    {
+        aReporter.Report( wxString::Format(
+                wxT( "Color theme '%s' not found, will use theme from PCB Editor settings.\n" ),
+                theme ),
+            RPT_SEVERITY_WARNING );
+    }
+
+    aOpts.SetColorSettings( colors );
     aOpts.SetOutputDirectory( aJob->GetConfiguredOutputPath() );
-}
\ No newline at end of file
+}
diff --git a/pcbnew/pcb_plotter.h b/pcbnew/pcb_plotter.h
index e7a5afac3a..7236be635d 100644
--- a/pcbnew/pcb_plotter.h
+++ b/pcbnew/pcb_plotter.h
@@ -70,7 +70,8 @@ public:
     /**
      * Translate a JOB to PCB_PLOT_PARAMS
      */
-    static void PlotJobToPlotOpts( PCB_PLOT_PARAMS& aOpts, JOB_EXPORT_PCB_PLOT* aJob );
+    static void PlotJobToPlotOpts( PCB_PLOT_PARAMS& aOpts, JOB_EXPORT_PCB_PLOT* aJob,
+                                   REPORTER& aReporter );
 
 protected:
     BOARD*          m_board;
@@ -83,4 +84,4 @@ private:
      */
     LSEQ getPlotSequence( PCB_LAYER_ID aLayerToPlot, LSEQ aPlotWithAllLayersSeq );
 
-};
\ No newline at end of file
+};
diff --git a/pcbnew/pcbnew_jobs_handler.cpp b/pcbnew/pcbnew_jobs_handler.cpp
index 58256fc7bb..08cf31467b 100644
--- a/pcbnew/pcbnew_jobs_handler.cpp
+++ b/pcbnew/pcbnew_jobs_handler.cpp
@@ -740,7 +740,7 @@ int PCBNEW_JOBS_HANDLER::JobExportSvg( JOB* aJob )
     brd->SynchronizeProperties();
 
     PCB_PLOT_PARAMS plotOpts;
-    PCB_PLOTTER::PlotJobToPlotOpts( plotOpts, aSvgJob );
+    PCB_PLOTTER::PlotJobToPlotOpts( plotOpts, aSvgJob, *m_reporter );
 
     PCB_PLOTTER     plotter( brd, m_reporter, plotOpts );
 
@@ -813,7 +813,7 @@ int PCBNEW_JOBS_HANDLER::JobExportDxf( JOB* aJob )
     }
 
     PCB_PLOT_PARAMS plotOpts;
-    PCB_PLOTTER::PlotJobToPlotOpts( plotOpts, aDxfJob );
+    PCB_PLOTTER::PlotJobToPlotOpts( plotOpts, aDxfJob, *m_reporter);
 
     PCB_PLOTTER plotter( brd, m_reporter, plotOpts );
 
@@ -873,7 +873,7 @@ int PCBNEW_JOBS_HANDLER::JobExportPdf( JOB* aJob )
     }
 
     PCB_PLOT_PARAMS plotOpts;
-    PCB_PLOTTER::PlotJobToPlotOpts( plotOpts, aPdfJob );
+    PCB_PLOTTER::PlotJobToPlotOpts( plotOpts, aPdfJob, *m_reporter );
 
     int returnCode = CLI::EXIT_CODES::OK;