diff --git a/etc/html/saveScriptOutput.C b/etc/html/saveScriptOutput.C
index 8eac791360f7fabfcce0968f0c7cd048198f0d4b..8695b5f42fd1eff0d50facedc036aa61fd56f9d0 100644
--- a/etc/html/saveScriptOutput.C
+++ b/etc/html/saveScriptOutput.C
@@ -12,7 +12,8 @@
 #include "TEnv.h"
 #include "TVirtualX.h"
 
-int saveScriptOutput(const char* script, const char* outdir, Bool_t compiled) {
+int saveScriptOutput(const char* script, const char* outdir, Bool_t compiled)
+{
    // Run script and save all windows to
    // outdir/script_0.png, outdir/script_1.png, ...
 
@@ -34,6 +35,12 @@ int saveScriptOutput(const char* script, const char* outdir, Bool_t compiled) {
       cmd += "+";
    if (!gROOT->IsBatch())
       gVirtualX->Sync(1);
+
+   // save current interpreter context to avoid gROOT->Reset()
+   // in the script to cause havoc by wiping everything away
+   gInterpreter->SaveContext();
+   gInterpreter->SaveGlobalsContext();
+
    gROOT->ProcessLine(cmd, &err);
    if (err != TInterpreter::kNoError)
       return kCannotRunScript;