Code generated texture is invisible when used in an UMG Slate Brush

I am trying to use a generated texture as a texture on one of my GUI buttons, but the button stays inexplicably invisible.
here is how I generate my texture

UTexture2D* photo = m_sceneCaptureComponent->TextureTarget->ConstructTexture2D(_owner, FString(TEXT("DronePhoto")) + FString::FromInt(m_photoCount), EObjectFlags::RF_NoFlags);

m_sceneCaptureComponent is a USceneCaptureComponent2D* and its TextureTarget is set in the inspector to a UTextureRenderTarget2D that is an Asset.

My texture is then assigned to my button via blueprint (it is inside the Icon var)

And here is what I get (the texture should display in the top left square)

I tried assigning an Asset texture to the Icon Blueprint var and everything works perfectly, I even went step by step inside the button drawing call ans did not manage to see a difference between the dynamic and the Asset texture that would lead to the dynamic texture not being drawn.

Maybe this is not a bug an I am missing something but I’m dry on ideas at the moment.

Hello! I know that this is an old thread but i finded a workaround and this will be useful for anybody with the same issue.

Idk why when we generate textures dynamically, the image widget show them invisible, but one thing that we can do is just create a material (Set the material domain to UI) and just put a SampleTexture2DParameter.

Then you can create an instance of this material on runtime before you put your texture on your image, assign your texture to the parameter that we created on the material and then apply that material to the image (SetBrushFromMaterial).

That worked for me.

Profit!