SBorder.BorderImage(FSlateBrush*) executes engine crash

I am trying to read material from Project Settings and set is as Brush Image in my widget.
This code I use for reading material from asset browser


FSlateBrush Brush = FSlateBrush();   
     const UInteractionSettings* Settings = GetDefault<UInteractionSettings>();
     if(Settings && Settings->EmptyCrosshairMaterial != nullptr){
        UObject *Material  = Cast<UObject>(Settings->EmptyCrosshairMaterial.TryLoad());
        if(Material != nullptr){
            UE_LOG(LogTemp, Warning, TEXT("Material for Interaction crosshair was read"));
                Brush.SetResourceObject(Material);
                
        }
     }
     Brush.ImageSize = FVector2D(32, 32);

Both log print in console, so I suppose everything is okey.
Next I draw my widget.

	ChildSlot
	[
        SAssignNew(Crosshair, SBorder)
    		.BorderImage(&Brush)
    		.Padding(FMargin(20))
    		
	];

If I remove .BorderImage(…), everything works, but if I execute this line, my engine crashes with next report.

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x00000008

FSlateBrush Brush should be a class variable. You create it on stack and then passing pointer to stack variable, but it immediately destroyed when it goes out of scope.

Wow. I used to program on C++ at school, but I am definitely not good enough to remember about this things. I really appreciate your help. It works and also it is additional knowledge about c++ for me)