Slate STextBlock animate ContentScale do nothing

I’m trying to animate a STextBlock within a SBorder change the content scale, but it does nothing.

/**
 * Implement a STextBlock with animation facilities
 */
class KSGMSLATE_API SKTextBlockAnimated : public SBorder
{
public:
	SLATE_BEGIN_ARGS(SKTextBlockAnimated)
		//------------------------------
		// STextBlock arguments
		//------------------------------
		: _Text()
		, _TextStyle(&FCoreStyle::Get().GetWidgetStyle<FTextBlockStyle>("NormalText"))
		, _Font()
		, _ColorAndOpacity()
		, _ShadowOffset()
		, _ShadowColorAndOpacity()
		, _HighlightColor()
		, _HighlightShape()
		, _HighlightText()
		, _WrapTextAt(0.0f)
		, _AutoWrapText(false)
		, _WrappingPolicy(ETextWrappingPolicy::DefaultWrapping)
		, _Margin()
		, _LineHeightPercentage(1.0f)
		, _Justification(ETextJustify::Left)
		, _MinDesiredWidth(0.0f)
		, _TextShapingMethod()
		, _TextFlowDirection()
		, _LineBreakPolicy()
		//------------------------------
		// End of STextBlock arguments
		//------------------------------
		, _AnimationType(ECurveEaseFunction::CubicOut)
		, _AnimationSeconds(1.0f)
		, _AutoPlay(true)
		, _LoopMode(true)
		, _ScaleXFactor(2.0f)
		, _ScaleYFactor(2.0f)
	{}

	//------------------------------
	// STextBlock arguments
	//------------------------------

	/** The text displayed in this text block */
	SLATE_ATTRIBUTE(FText, Text)

	/** Pointer to a style of the text block, which dictates the font, color, and shadow options. */
	SLATE_STYLE_ARGUMENT(FTextBlockStyle, TextStyle)

	/** Sets the font used to draw the text */
	SLATE_ATTRIBUTE(FSlateFontInfo, Font)

	/** Text color and opacity */
	SLATE_ATTRIBUTE(FSlateColor, ColorAndOpacity)

	/** Drop shadow offset in pixels */
	SLATE_ATTRIBUTE(FVector2D, ShadowOffset)

	/** Shadow color and opacity */
	SLATE_ATTRIBUTE(FLinearColor, ShadowColorAndOpacity)

	/** The color used to highlight the specified text */
	SLATE_ATTRIBUTE(FLinearColor, HighlightColor)

	/** The brush used to highlight the specified text*/
	SLATE_ATTRIBUTE(const FSlateBrush*, HighlightShape)

	/** Highlight this text in the text block */
	SLATE_ATTRIBUTE(FText, HighlightText)

	/** Whether text wraps onto a new line when it's length exceeds this width; if this value is zero or negative, no wrapping occurs. */
	SLATE_ATTRIBUTE(float, WrapTextAt)

	/** Whether to wrap text automatically based on the widget's computed horizontal space.  IMPORTANT: Using automatic wrapping can result
	in visual artifacts, as the the wrapped size will computed be at least one frame late!  Consider using WrapTextAt instead.  The initial
	desired size will not be clamped.  This works best in cases where the text block's size is not affecting other widget's layout. */
	SLATE_ATTRIBUTE(bool, AutoWrapText)

	/** The wrapping policy to use */
	SLATE_ATTRIBUTE(ETextWrappingPolicy, WrappingPolicy)

	/** The amount of blank space left around the edges of text area. */
	SLATE_ATTRIBUTE(FMargin, Margin)

	/** The amount to scale each lines height by. */
	SLATE_ATTRIBUTE(float, LineHeightPercentage)

	/** How the text should be aligned with the margin. */
	SLATE_ATTRIBUTE(ETextJustify::Type, Justification)

	/** Minimum width that a text block should be */
	SLATE_ATTRIBUTE(float, MinDesiredWidth)

	/** Which text shaping method should we use? (unset to use the default returned by GetDefaultTextShapingMethod) */
	SLATE_ARGUMENT(TOptional<ETextShapingMethod>, TextShapingMethod)

	/** Which text flow direction should we use? (unset to use the default returned by GetDefaultTextFlowDirection) */
	SLATE_ARGUMENT(TOptional<ETextFlowDirection>, TextFlowDirection)

	/** The iterator to use to detect appropriate soft-wrapping points for lines (or null to use the default) */
	SLATE_ARGUMENT(TSharedPtr<IBreakIterator>, LineBreakPolicy)

	/** Called when this text is double clicked */
	SLATE_EVENT(FOnClicked, OnDoubleClicked)

	//------------------------------
	// End of STextBlock arguments
	//------------------------------

	/** The animation type */
	SLATE_ARGUMENT(ECurveEaseFunction::Type, AnimationType)

	/** The animation seconds */
	SLATE_ARGUMENT(float, AnimationSeconds)

	/** Auto play the animation */
	SLATE_ARGUMENT(bool, AutoPlay)

	/** Play the animation in loop mode */
	SLATE_ARGUMENT(bool, LoopMode)

	/** The scaling X factor */
	SLATE_ATTRIBUTE(float, ScaleXFactor)
	/** The scaling Y factor */
	SLATE_ATTRIBUTE(float, ScaleYFactor)

	SLATE_END_ARGS()

	/**
	* Construct this widget
	*
	* @param	InArgs	The declaration data for this widget
	*/
	void Construct(const FArguments& InArgs);

	/**
	 * @brief Is the animation playing ?
	 * @return true if animation is playing, false if not.
	 */
	bool IsAnimationPlaying() const
	{
		return Curve.IsPlaying();
	}

	/**
	 * @brief Play the animation.
	 */
	void PlayAnimation()
	{
		if (Curve.IsPlaying())
			Curve.Resume();
	}

	/**
	 * @brief Pause the animation.
	 */
	void PauseAnimation()
	{
		Curve.Pause();
	}
protected:

	/**
	 * @brief Gets text scale based on the animation curve.
	 * @return The FVector2D text scale.
	 */
	FVector2D GetDesiredSizeScale() const;

protected:
	/** Curved used to simulate the animation */
	FCurveSequence Curve;

	TSharedPtr<class STextBlock> TextBlock;

	/** The scaling X factor */
	TAttribute<float> ScaleXFactor;
	/** The scaling Y factor */
	TAttribute<float> ScaleYFactor;

};


BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION


void SKTextBlockAnimated::Construct(const FArguments& InArgs)
{
	ScaleXFactor = InArgs._ScaleXFactor;
	ScaleYFactor = InArgs._ScaleYFactor;

	// The curve used for animating the text block
	Curve = FCurveSequence(0.0f, InArgs._AnimationSeconds, InArgs._AnimationType);

	SBorder::Construct(SBorder::FArguments()
		.ContentScale(this, &SKTextBlockAnimated::GetDesiredSizeScale)
		.HAlign(HAlign_Fill)
		.VAlign(VAlign_Fill)
		[
			SAssignNew(TextBlock, STextBlock)
			.Text(InArgs._Text)
			.TextStyle(InArgs._TextStyle)
			.Font(InArgs._Font)
			.ColorAndOpacity(InArgs._ColorAndOpacity)
			.ShadowOffset(InArgs._ShadowOffset)
			.ShadowColorAndOpacity(InArgs._ShadowColorAndOpacity)
			.HighlightColor(InArgs._HighlightColor)
			.HighlightShape(InArgs._HighlightShape)
			.HighlightText(InArgs._HighlightText)
			.WrapTextAt(InArgs._WrapTextAt)
			.AutoWrapText(InArgs._AutoWrapText)
			.WrappingPolicy(InArgs._WrappingPolicy)
			.Margin(InArgs._Margin)
			.LineHeightPercentage(InArgs._LineHeightPercentage)
			.Justification(InArgs._Justification)
			.MinDesiredWidth(InArgs._MinDesiredWidth)
			.TextShapingMethod(InArgs._TextShapingMethod)
			.TextFlowDirection(InArgs._TextFlowDirection)
			.LineBreakPolicy(InArgs._LineBreakPolicy)
			.OnDoubleClicked(InArgs._OnDoubleClicked)
		]
	);

	Curve.Play(this->AsShared(), InArgs._LoopMode);
	// If not auto play, pause it immediately
	if (InArgs._AutoPlay == false)
		Curve.Pause();

}

FVector2D SKTextBlockAnimated::GetDesiredSizeScale() const
{
	if (Curve.IsPlaying())
	{
		float Scale = Curve.GetLerp();
		float X = FMath::Lerp(1.0f, ScaleXFactor.Get(), Scale);
		float Y = FMath::Lerp(1.0f, ScaleYFactor.Get(), Scale);
		UE_LOG(LogKSGMSlate, VeryVerbose, TEXT("SKTextBlockAnimated::GetDesiredSizeScale  -  Scale=%g   X=%g  Y=%g"), Scale, X, Y);

		return FVector2D(X, Y);
	}
	UE_LOG(LogKSGMSlate, VeryVerbose, TEXT("SKTextBlockAnimated::GetDesiredSizeScale  -  1.0 - 1.0 "));
	return FVector2D(1.0f, 1.0f);
}

END_SLATE_FUNCTION_BUILD_OPTIMIZATION

The scale factor is changing correctly, but the text block does not change.

[2017.04.04-06.16.30:331][476]LogKSGMSlate:VeryVerbose: SKTextBlockAnimated::GetDesiredSizeScale - Scale=0.440506 X=2.32152 Y=1.88101
[2017.04.04-06.16.30:347][477]LogKSGMSlate:VeryVerbose: SKTextBlockAnimated::GetDesiredSizeScale - Scale=0.456686 X=2.37006 Y=1.91337

Anyone has an idea why the content is not scaled ?