diff --git a/MQ/histoServer/CbmMqHistoServer.cxx b/MQ/histoServer/CbmMqHistoServer.cxx
index b72d29b960a2bee00070fb9919ec7a1d04140ff8..0ec75bbed1d16e5297c715c9dd9fe4cbd6f866ec 100644
--- a/MQ/histoServer/CbmMqHistoServer.cxx
+++ b/MQ/histoServer/CbmMqHistoServer.cxx
@@ -388,11 +388,13 @@ bool CbmMqHistoServer::PrepareCanvas(uint32_t uCanvIdx) {
 }
 
 bool CbmMqHistoServer::SaveHistograms() {
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   /// (Re-)Create ROOT file to store the histos
-  TDirectory* oldDir = NULL;
-  TFile* histoFile   = NULL;
-  // Store current directory position to allow restore later
-  oldDir = gDirectory;
+  TFile* histoFile = nullptr;
+
   // open separate histo file in recreate mode
   histoFile = new TFile(fsHistoFileName.data(), "RECREATE");
 
@@ -423,8 +425,10 @@ bool CbmMqHistoServer::SaveHistograms() {
     histoFile->cd();
   }  // for( UInt_t uHisto = 0; uHisto < fvCanvas.size(); ++uHisto )
 
-  // Restore original directory position
-  oldDir->cd();
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
+
   histoFile->Close();
 
   return true;