How do you set a Texture on a Niagara variable at runtime?

This stopped working for me in 4.23 so I looked into it and ended up with this

UFUNCTION(BlueprintPure, Category = Niagara, meta = (DisplayName = "Set Niagara Variable (UTexture)"))
void UHTMLBlueprintFunctionLibrary::SetNiagaraVariableTexture(class UNiagaraComponent* niagara, const FString& InVariableName, UTexture* InValue)
{
	if (!niagara || !InValue) return;

	FName VarName = FName(*InVariableName);

	FNiagaraUserRedirectionParameterStore& overrideParameters = niagara->GetOverrideParameters();
	FNiagaraVariable niagaraVar = FNiagaraVariable(FNiagaraTypeDefinition(UNiagaraDataInterfaceTexture::StaticClass()), VarName);
	UNiagaraDataInterfaceTexture* current = (UNiagaraDataInterfaceTexture*)overrideParameters.GetDataInterface(niagaraVar);

	UNiagaraDataInterfaceTexture* data = NewObject<UNiagaraDataInterfaceTexture>();
	data->Texture = InValue;
	data->CopyTo(current);
	
}

Feels wrong and I’m sure it is but it works for now.