The display position of the text in DrawDebugString is affected by the scale of the display.
Should refer to the Project() of DebugCanvas (not Canvas).
- Suggest Code
void AHUD::DrawDebugTextList()
{
    // ...
    // don't draw text behind the camera
    if ( ((WorldTextLoc - CameraLoc) | CameraRot.Vector()) > 0.f )
    {
        // Project with DebugCanvas
//      FVector ScreenLoc = Canvas->Project(WorldTextLoc);
        FVector ScreenLoc = DebugCanvas->Project(WorldTextLoc);
        TextItem.SetColor( DebugTextList[Idx].TextColor );
        TextItem.Text = FText::FromString( DebugTextList[Idx].DebugText );
        TextItem.Scale = FVector2D( DebugTextList[Idx].FontScale, DebugTextList[Idx].FontScale);
        DebugCanvas->DrawItem( TextItem, FVector2D( FMath::CeilToFloat(ScreenLoc.X), FMath::CeilToFloat(ScreenLoc.Y) ) );
    }
    // ...
}
Result:
The debug text is displayed in a location away from the Actor.
Expected:
The debug text is displayed in the Actor's location.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-99709 in the post.
| 0 | 
| Fix Commit | 14329579 | 
|---|---|
| Release Commit | 14329579 | 
| Created | Sep 16, 2020 | 
|---|---|
| Resolved | Sep 16, 2020 | 
| Updated | Apr 28, 2021 |