diff --git a/mvd/CbmMvdPileupManager.cxx b/mvd/CbmMvdPileupManager.cxx
index 766fc7aac42bf55dd7851b63e79f96eb21d40cb2..8813f5a2db6a5bf6f5c12bf5a58a785c82b5b862 100644
--- a/mvd/CbmMvdPileupManager.cxx
+++ b/mvd/CbmMvdPileupManager.cxx
@@ -74,7 +74,10 @@ Int_t CbmMvdPileupManager::FillBuffer(TString fileName,
   fBuffer->Delete();
 
   TClonesArray* pointArray = NULL;
-  TFile* saveGFile         = gFile;
+
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
 
   TFile* bgfile = new TFile(fileName);
   if (!bgfile) {
@@ -113,7 +116,10 @@ Int_t CbmMvdPileupManager::FillBuffer(TString fileName,
   delete bgtree;
   bgfile->Close();
   delete bgfile;
-  saveGFile->cd();
+
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
 
   return nBuffer;
 }