diff --git a/Event/xAOD/xAODTriggerAthenaPool/CMakeLists.txt b/Event/xAOD/xAODTriggerAthenaPool/CMakeLists.txt
index 844b2de14249db74bbe0096d7206860e96b2a0a5..09eb2083dac5dd89f4abd0597fbcedfb1155c6a2 100644
--- a/Event/xAOD/xAODTriggerAthenaPool/CMakeLists.txt
+++ b/Event/xAOD/xAODTriggerAthenaPool/CMakeLists.txt
@@ -1,3 +1,4 @@
+# $Id: CMakeLists.txt 755768 2016-06-17 13:43:10Z krasznaa $
 ################################################################################
 # Package: xAODTriggerAthenaPool
 ################################################################################
@@ -6,20 +7,47 @@
 atlas_subdir( xAODTriggerAthenaPool )
 
 # Declare the package's dependencies:
-atlas_depends_on_subdirs( PUBLIC
-                          Trigger/TrigEvent/TrigNavTools
-                          PRIVATE
-                          Control/AthContainers
-                          Control/AthenaKernel
-                          Database/AthenaPOOL/AthenaPoolCnvSvc
-                          Database/AthenaPOOL/AthenaPoolUtilities
-                          Event/xAOD/xAODTrigger )
+atlas_depends_on_subdirs(
+   PUBLIC
+   Trigger/TrigEvent/TrigNavTools
+   PRIVATE
+   Control/AthContainers
+   Control/AthenaKernel
+   Database/AthenaPOOL/AthenaPoolCnvSvc
+   Database/AthenaPOOL/AthenaPoolUtilities
+   Event/xAOD/xAODTrigger )
 
 # Component(s) in the package:
 atlas_add_poolcnv_library( xAODTriggerAthenaPoolPoolCnv
-                           src/*.cxx
-                           FILES xAODTrigger/MuonRoIContainer.h xAODTrigger/MuonRoIAuxContainer.h xAODTrigger/JetRoIContainer.h xAODTrigger/JetRoIAuxContainer.h xAODTrigger/EmTauRoIContainer.h xAODTrigger/EmTauRoIAuxContainer.h xAODTrigger/JetEtRoI.h xAODTrigger/JetEtRoIAuxInfo.h xAODTrigger/EnergySumRoI.h xAODTrigger/EnergySumRoIAuxInfo.h xAODTrigger/TrigCompositeContainer.h xAODTrigger/TrigCompositeAuxContainer.h xAODTrigger/TriggerMenuContainer.h xAODTrigger/TriggerMenuAuxContainer.h xAODTrigger/TrigConfKeys.h xAODTrigger/TrigDecision.h xAODTrigger/TrigDecisionAuxInfo.h xAODTrigger/TrigNavigation.h xAODTrigger/TrigNavigationAuxInfo.h xAODTrigger/RoiDescriptorStore.h xAODTrigger/RoiDescriptorStoreAuxInfo.h xAODTrigger/BunchConfKey.h xAODTrigger/BunchConfContainer.h xAODTrigger/BunchConfAuxContainer.h xAODTrigger/TrigPassBitsContainer.h xAODTrigger/TrigPassBitsAuxContainer.h
-                           TYPES_WITH_NAMESPACE xAOD::MuonRoIContainer xAOD::MuonRoIAuxContainer xAOD::JetRoIContainer xAOD::JetRoIAuxContainer xAOD::EmTauRoIContainer xAOD::EmTauRoIAuxContainer xAOD::JetEtRoI xAOD::JetEtRoIAuxInfo xAOD::EnergySumRoI xAOD::EnergySumRoIAuxInfo xAOD::TrigCompositeContainer xAOD::TrigCompositeAuxContainer xAOD::TriggerMenuContainer xAOD::TriggerMenuAuxContainer xAOD::TrigConfKeys xAOD::TrigDecision xAOD::TrigDecisionAuxInfo xAOD::TrigNavigation xAOD::TrigNavigationAuxInfo xAOD::RoiDescriptorStore xAOD::RoiDescriptorStoreAuxInfo xAOD::BunchConfKey xAOD::BunchConfContainer xAOD::BunchConfAuxContainer xAOD::TrigPassBitsContainer xAOD::TrigPassBitsAuxContainer
-                           CNV_PFX xAOD
-                           LINK_LIBRARIES TrigNavToolsLib AthContainers AthenaKernel AthenaPoolCnvSvcLib AthenaPoolUtilities xAODTrigger )
-
+   src/*.h src/*.cxx
+   FILES xAODTrigger/MuonRoIContainer.h xAODTrigger/MuonRoIAuxContainer.h
+   xAODTrigger/JetRoIContainer.h xAODTrigger/JetRoIAuxContainer.h
+   xAODTrigger/EmTauRoIContainer.h xAODTrigger/EmTauRoIAuxContainer.h
+   xAODTrigger/JetEtRoI.h xAODTrigger/JetEtRoIAuxInfo.h
+   xAODTrigger/EnergySumRoI.h xAODTrigger/EnergySumRoIAuxInfo.h
+   xAODTrigger/TrigCompositeContainer.h xAODTrigger/TrigCompositeAuxContainer.h
+   xAODTrigger/TriggerMenuContainer.h xAODTrigger/TriggerMenuAuxContainer.h
+   xAODTrigger/TrigConfKeys.h
+   xAODTrigger/TrigDecision.h xAODTrigger/TrigDecisionAuxInfo.h
+   xAODTrigger/TrigNavigation.h xAODTrigger/TrigNavigationAuxInfo.h
+   xAODTrigger/RoiDescriptorStore.h xAODTrigger/RoiDescriptorStoreAuxInfo.h
+   xAODTrigger/BunchConfKey.h
+   xAODTrigger/BunchConfContainer.h xAODTrigger/BunchConfAuxContainer.h
+   xAODTrigger/TrigPassBitsContainer.h xAODTrigger/TrigPassBitsAuxContainer.h
+   TYPES_WITH_NAMESPACE xAOD::MuonRoIContainer xAOD::MuonRoIAuxContainer
+   xAOD::JetRoIContainer xAOD::JetRoIAuxContainer
+   xAOD::EmTauRoIContainer xAOD::EmTauRoIAuxContainer
+   xAOD::JetEtRoI xAOD::JetEtRoIAuxInfo
+   xAOD::EnergySumRoI xAOD::EnergySumRoIAuxInfo
+   xAOD::TrigCompositeContainer xAOD::TrigCompositeAuxContainer
+   xAOD::TriggerMenuContainer xAOD::TriggerMenuAuxContainer
+   xAOD::TrigConfKeys
+   xAOD::TrigDecision xAOD::TrigDecisionAuxInfo
+   xAOD::TrigNavigation xAOD::TrigNavigationAuxInfo
+   xAOD::RoiDescriptorStore xAOD::RoiDescriptorStoreAuxInfo
+   xAOD::BunchConfKey
+   xAOD::BunchConfContainer xAOD::BunchConfAuxContainer
+   xAOD::TrigPassBitsContainer xAOD::TrigPassBitsAuxContainer
+   CNV_PFX xAOD
+   LINK_LIBRARIES TrigNavToolsLib AthContainers AthenaKernel AthenaPoolCnvSvcLib
+   AthenaPoolUtilities xAODTrigger )
diff --git a/Event/xAOD/xAODTriggerAthenaPool/cmt/requirements b/Event/xAOD/xAODTriggerAthenaPool/cmt/requirements
index a15420f9ca05edda8809fd3732d7f549e89aa744..67c400477b945992537acc80ad8941ce7e1b806f 100644
--- a/Event/xAOD/xAODTriggerAthenaPool/cmt/requirements
+++ b/Event/xAOD/xAODTriggerAthenaPool/cmt/requirements
@@ -75,3 +75,4 @@ apply_pattern poolcnv typesWithNamespace="xAOD::MuonRoIContainer \
                              TrigPassBitsContainer.h \
                              TrigPassBitsAuxContainer.h" \
                       cnv_pfx="xAOD"
+
diff --git a/Event/xAOD/xAODTriggerAthenaPool/src/xAODTrigPassBitsContainerCnv.cxx b/Event/xAOD/xAODTriggerAthenaPool/src/xAODTrigPassBitsContainerCnv.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..017fa1c99c0cbb30f8998fc9a414f0f9c82feff8
--- /dev/null
+++ b/Event/xAOD/xAODTriggerAthenaPool/src/xAODTrigPassBitsContainerCnv.cxx
@@ -0,0 +1,34 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id: xAODTrigPassBitsContainerCnv.cxx 755768 2016-06-17 13:43:10Z krasznaa $
+
+// System include(s):
+#include <memory>
+
+// Local include(s):
+#include "xAODTrigPassBitsContainerCnv.h"
+
+xAODTrigPassBitsContainerCnv::
+xAODTrigPassBitsContainerCnv( ISvcLocator* svcLoc )
+   : xAODTrigPassBitsContainerCnvBase( svcLoc ) {
+
+}
+
+xAOD::TrigPassBitsContainer* xAODTrigPassBitsContainerCnv::createTransient() {
+
+   // Get the object using the base class:
+   std::unique_ptr< xAOD::TrigPassBitsContainer >
+         ondisk( xAODTrigPassBitsContainerCnvBase::createTransient() );
+
+   // Create a copy of it:
+   xAOD::TrigPassBitsContainer* result = new xAOD::TrigPassBitsContainer();
+   for( size_t i = 0; i < ondisk->size(); ++i ) {
+      result->push_back( new xAOD::TrigPassBits() );
+   }
+   result->setStore( ondisk->getConstStoreLink() );
+
+   // Now return it:
+   return result;
+}
diff --git a/Event/xAOD/xAODTriggerAthenaPool/src/xAODTrigPassBitsContainerCnv.h b/Event/xAOD/xAODTriggerAthenaPool/src/xAODTrigPassBitsContainerCnv.h
new file mode 100644
index 0000000000000000000000000000000000000000..94df238b445f51c89d10a93aca1098dc4b16ad9a
--- /dev/null
+++ b/Event/xAOD/xAODTriggerAthenaPool/src/xAODTrigPassBitsContainerCnv.h
@@ -0,0 +1,51 @@
+// Dear emacs, this is -*- c++ -*-
+
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+// $Id: xAODTrigPassBitsContainerCnv.h 755768 2016-06-17 13:43:10Z krasznaa $
+#ifndef XAODTRIGGERATHENAPOOL_XAODTRIGPASSBITSCONTAINERCNV_H
+#define XAODTRIGGERATHENAPOOL_XAODTRIGPASSBITSCONTAINERCNV_H
+
+// Gaudi/Athena include(s):
+#include "AthenaPoolCnvSvc/T_AthenaPoolxAODCnv.h"
+
+// EDM include(s):
+#include "xAODTrigger/TrigPassBitsContainer.h"
+
+// Base the converter on the helper class:
+typedef T_AthenaPoolxAODCnv< xAOD::TrigPassBitsContainer >
+   xAODTrigPassBitsContainerCnvBase;
+
+/// Custom converter for reading xAOD::TrigPassBitsContainer correctly
+///
+/// Unfortunately we managed to write quite a lot of AOD files with incorrect
+/// xAOD::TrigPassBitsContainer payload in them. (Forgot to declare a container
+/// proxy for the type.)
+///
+/// To overcome this, this converter explicitly creates a new container from
+/// scratch. Which has the same size as the one on disk. Connects the new
+/// container to the auxiliary store of the original one, and then returns
+/// this freshly made container instead of the original one.
+///
+/// Once incorrectly written files will not be an issue anymore (possibly this
+/// will never be the case, as we also wrote some BS files like this...), this
+/// hack could be removed.
+///
+/// @author Attila Krasznahorkay <Attila.Krasznahorkay@cern.ch>
+///
+/// $Revision: 755768 $
+/// $Date: 2016-06-17 15:43:10 +0200 (Fri, 17 Jun 2016) $
+///
+class xAODTrigPassBitsContainerCnv : public xAODTrigPassBitsContainerCnvBase {
+
+public:
+   /// Converter constructor
+   xAODTrigPassBitsContainerCnv( ISvcLocator* svcLoc );
+
+   /// Function reading in the persistent object from disk
+   virtual xAOD::TrigPassBitsContainer* createTransient() override final;
+};
+
+#endif // XAODTRIGGERATHENAPOOL_XAODTRIGPASSBITSCONTAINERCNV_H