Index: NoesisGUI/Source/NoesisRuntime/Private/NoesisTypeClass.cpp
===================================================================
--- NoesisGUI/Source/NoesisRuntime/Private/NoesisTypeClass.cpp	(revision 12777)
+++ NoesisGUI/Source/NoesisRuntime/Private/NoesisTypeClass.cpp	(revision 12778)
@@ -2171,18 +2171,21 @@
 			MaterialInstanceDynamic = UMaterialInstanceDynamic::Create(InMaterial, GetTransientPackage());
 		}
 		MaterialInstanceDynamic->AddToRoot();
-		Material = NoesisCreateMaterial(MaterialInstanceDynamic);
+		Material = NoesisCreateMaterial(MaterialInstanceDynamic.Get());
 	}
 
 	virtual ~NoesisMaterialWrapper()
 	{
 		NoesisDestroyMaterial(Material);
-		MaterialInstanceDynamic->RemoveFromRoot();
+		if (MaterialInstanceDynamic.IsValid())
+		{
+			MaterialInstanceDynamic->RemoveFromRoot();
+		}
 	}
 
 	void SetScalarParameterValue(FName ParamName, float Value)
 	{
-		if (MaterialInstanceDynamic != nullptr)
+		if (MaterialInstanceDynamic.IsValid())
 		{
 			MaterialInstanceDynamic->SetScalarParameterValue(ParamName, Value);
 		}
@@ -2190,7 +2193,7 @@
 
 	void SetVectorParameterValue(FName ParamName, FLinearColor Value)
 	{
-		if (MaterialInstanceDynamic != nullptr)
+		if (MaterialInstanceDynamic.IsValid())
 		{
 			MaterialInstanceDynamic->SetVectorParameterValue(ParamName, Value);
 		}
@@ -2198,7 +2201,7 @@
 
 	void SetTextureParameterValue(FName ParamName, UTexture* Value)
 	{
-		if (MaterialInstanceDynamic != nullptr)
+		if (MaterialInstanceDynamic.IsValid())
 		{
 			MaterialInstanceDynamic->SetTextureParameterValue(ParamName, Value);
 		}
@@ -2207,7 +2210,7 @@
 protected:
 
 	NoesisTypeClass* TypeClass = nullptr;
-	UMaterialInstanceDynamic* MaterialInstanceDynamic = nullptr;
+	TWeakObjectPtr<UMaterialInstanceDynamic> MaterialInstanceDynamic;
 	void* Material = nullptr;
 };
 
