diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp
index c9cb63d14e56da2087cad39a38f44d61cf9280c8..201658ff1734a26968e95f79c5783297e790a09c 100644
--- a/GUI/Model/FromCore/ItemizeSample.cpp
+++ b/GUI/Model/FromCore/ItemizeSample.cpp
@@ -667,6 +667,9 @@ SampleItem* itemizeSample(const MultiLayer& sample, const QString& nodeName)
         }
     }
 
+    // append standard materials to the example-specific ones
+    result->addStandardMaterials();
+
     return result;
 }
 
diff --git a/GUI/Model/Sample/CoreAndShellItem.cpp b/GUI/Model/Sample/CoreAndShellItem.cpp
index dbd512cd702d509f979f435d080e566ce139315e..74053181a0ef89432e9b7731e2ffff3bcb090ceb 100644
--- a/GUI/Model/Sample/CoreAndShellItem.cpp
+++ b/GUI/Model/Sample/CoreAndShellItem.cpp
@@ -157,7 +157,7 @@ ParticleItem* CoreAndShellItem::coreItem() const
 ParticleItem* CoreAndShellItem::createCoreItem(const MaterialModel* materials)
 {
     m_core.reset(new ParticleItem(materials));
-    m_core->setMaterial(materials->defaultMaterialItem());
+    m_core->setMaterial(materials->defaultCoreMaterialItem());
     return m_core.get();
 }
 
@@ -169,7 +169,7 @@ ParticleItem* CoreAndShellItem::shellItem() const
 ParticleItem* CoreAndShellItem::createShellItem(const MaterialModel* materials)
 {
     m_shell.reset(new ParticleItem(materials));
-    m_shell->setMaterial(materials->defaultMaterialItem());
+    m_shell->setMaterial(materials->defaultParticleMaterialItem());
 
     // position is not used for shell item
     m_shell->setPosition({});
diff --git a/GUI/Model/Sample/MaterialModel.cpp b/GUI/Model/Sample/MaterialModel.cpp
index 5a9b12330a2db00d120692ceeaf5d311e0603813..8fae8c67196f5a69b738caddfca6729f51584e32 100644
--- a/GUI/Model/Sample/MaterialModel.cpp
+++ b/GUI/Model/Sample/MaterialModel.cpp
@@ -29,13 +29,15 @@ const QString Material("Material");
 
 QColor suggestMaterialColor(const QString& name)
 {
-    if (name.contains("Vacuum"))
+    if (name.contains(materialMap.key(DefaultMaterials::Vacuum)))
         return QColor(179, 242, 255);
-    if (name.contains("Substrate"))
+    if (name.contains(materialMap.key(DefaultMaterials::Substrate)))
         return QColor(205, 102, 0);
-    if (name.contains("Default"))
+    if (name.contains(materialMap.key(DefaultMaterials::Default)))
         return QColor(Qt::green);
-    if (name.contains("Particle"))
+    if (name.contains(materialMap.key(DefaultMaterials::Core)))
+        return QColor(220, 140, 220);
+    if (name.contains(materialMap.key(DefaultMaterials::Particle)))
         return QColor(146, 198, 255);
 
     // return a random color
@@ -48,6 +50,11 @@ QColor suggestMaterialColor(const QString& name)
 
 } // namespace
 
+QMap<QString, DefaultMaterials> materialMap = {{"Default", DefaultMaterials::Default},
+                                               {"Vacuum", DefaultMaterials::Vacuum},
+                                               {"Particle", DefaultMaterials::Particle},
+                                               {"Core", DefaultMaterials::Core},
+                                               {"Substrate", DefaultMaterials::Substrate}};
 
 MaterialModel::MaterialModel() {}
 
@@ -147,6 +154,24 @@ MaterialItem* MaterialModel::defaultMaterialItem() const
     return materialItems().front();
 }
 
+MaterialItem* MaterialModel::defaultCoreMaterialItem() const
+{
+    for (auto* material : materialItems())
+        if (material->matItemName() == materialMap.key(DefaultMaterials::Core))
+            return material;
+
+    return defaultMaterialItem();
+}
+
+MaterialItem* MaterialModel::defaultParticleMaterialItem() const
+{
+    for (auto* material : materialItems())
+        if (material->matItemName() == materialMap.key(DefaultMaterials::Particle))
+            return material;
+
+    return defaultMaterialItem();
+}
+
 void MaterialModel::removeMaterialItem(MaterialItem* materialItem)
 {
     m_materials.removeAll(materialItem);
diff --git a/GUI/Model/Sample/MaterialModel.h b/GUI/Model/Sample/MaterialModel.h
index 638d1424f166820aff7f47c59c0a327911751c9b..5119a3c6a024808e7149f1bac4bc65a38e582afe 100644
--- a/GUI/Model/Sample/MaterialModel.h
+++ b/GUI/Model/Sample/MaterialModel.h
@@ -19,6 +19,11 @@
 #include <QVector>
 #include <QXmlStreamReader>
 
+//! Materials created by default
+enum class DefaultMaterials { Default, Vacuum, Particle, Core, Substrate };
+
+extern QMap<QString, DefaultMaterials> materialMap;
+
 class MaterialItem;
 
 class MaterialModel : public QObject {
@@ -47,6 +52,8 @@ public:
     const QVector<MaterialItem*>& materialItems() const;
 
     MaterialItem* defaultMaterialItem() const;
+    MaterialItem* defaultCoreMaterialItem() const;
+    MaterialItem* defaultParticleMaterialItem() const;
 
     void removeMaterialItem(MaterialItem* materialItem);
 
diff --git a/GUI/Model/Sample/SampleItem.cpp b/GUI/Model/Sample/SampleItem.cpp
index 3f0430e51cc6992b01b911e8c66f76bd5186e757..98331bab1d4de98dc7a5ab6fcefa3d27d32d698e 100644
--- a/GUI/Model/Sample/SampleItem.cpp
+++ b/GUI/Model/Sample/SampleItem.cpp
@@ -58,10 +58,26 @@ QVector<ItemWithMaterial*> SampleItem::itemsWithMaterial() const
 
 void SampleItem::addStandardMaterials()
 {
-    m_materials.addRefractiveMaterialItem("Default", 1e-3, 1e-5);
-    m_materials.addRefractiveMaterialItem("Vacuum", 0.0, 0.0);
-    m_materials.addRefractiveMaterialItem("Particle", 6e-4, 2e-8);
-    m_materials.addRefractiveMaterialItem("Substrate", 6e-6, 2e-8);
+    // add only non-existing materials
+    QString name = materialMap.key(DefaultMaterials::Default);
+    if (!m_materials.materialItemFromName(name))
+        m_materials.addRefractiveMaterialItem(name, 1e-3, 1e-5);
+
+    name = materialMap.key(DefaultMaterials::Vacuum);
+    if (!m_materials.materialItemFromName(name))
+        m_materials.addRefractiveMaterialItem(name, 0.0, 0.0);
+
+    name = materialMap.key(DefaultMaterials::Particle);
+    if (!m_materials.materialItemFromName(name))
+        m_materials.addRefractiveMaterialItem(name, 6e-4, 2e-8);
+
+    name = materialMap.key(DefaultMaterials::Core);
+    if (!m_materials.materialItemFromName(name))
+        m_materials.addRefractiveMaterialItem(name, 2e-4, 1e-8);
+
+    name = materialMap.key(DefaultMaterials::Substrate);
+    if (!m_materials.materialItemFromName(name))
+        m_materials.addRefractiveMaterialItem(name, 6e-6, 2e-8);
 }
 
 QVector<LayerItem*> SampleItem::layerItems() const
diff --git a/GUI/View/SampleDesigner/SampleEditorController.cpp b/GUI/View/SampleDesigner/SampleEditorController.cpp
index 39dd711fb37e72ba9b9746e94414e69445388e3e..13f32e84c857c4b646dfcd7123347acb2cb54dac 100644
--- a/GUI/View/SampleDesigner/SampleEditorController.cpp
+++ b/GUI/View/SampleDesigner/SampleEditorController.cpp
@@ -228,7 +228,7 @@ SampleEditorController::createAndInitItem(FormFactorItemCatalog::Type formFactor
 {
     auto* newParticle = new ParticleItem(materialModel());
     newParticle->setFormFactor(FormFactorItemCatalog::create(formFactorType));
-    newParticle->setMaterial(materialModel()->defaultMaterialItem());
+    newParticle->setMaterial(materialModel()->defaultParticleMaterialItem());
     return newParticle;
 }