diff --git a/MeshLib/ElementStatus.cpp b/MeshLib/ElementStatus.cpp
index 47c67671f396e4fa1c80c74307fe4c87ad5dd0f4..a825faf7d57a6872e2038eea39623a8c7c1bcc7c 100644
--- a/MeshLib/ElementStatus.cpp
+++ b/MeshLib/ElementStatus.cpp
@@ -34,14 +34,19 @@ ElementStatus::ElementStatus(Mesh const* const mesh,
                              std::vector<unsigned> const& vec_inactive_matIDs)
     : ElementStatus(mesh, !vec_inactive_matIDs.empty())
 {
-	const std::size_t nElems (_mesh->getNElements());
-	for (auto material_id : vec_inactive_matIDs) {
-		for (auto e : _mesh->getElements())
-			if (e->getValue() == material_id)
-				this->setElementStatus(e->getID(), false);
+	auto materialIds = mesh->getProperties().getPropertyVector<int>("MaterialIDs");
+	if (materialIds) {
+		for (auto material_id : vec_inactive_matIDs) {
+			for (auto e : _mesh->getElements()) {
+				if ((*materialIds)[e->getID()] == material_id) {
+					setElementStatus(e->getID(), false);
+				}
+			}
+		}
 	}
 
-	_vec_active_eles.reserve(this->getNActiveElements());
+	_vec_active_eles.reserve(getNActiveElements());
+	const std::size_t nElems (_mesh->getNElements());
 	for (std::size_t i=0; i<nElems; ++i)
 		if (_element_status[i])
 			_vec_active_eles.push_back(const_cast<MeshLib::Element*>(_mesh->getElement(i)));