Tank Turret Won't Rotate Properly

I’ve been doing the C++ tutorial Tanks vs. Zombies and I’ve been working on the turret rotation so you can aim with your mouse. The problem is that the turret is always 90 degrees off of where it should be aiming.

Here is my code for Turret.cpp:

// Fill out your copyright notice in the Description page of Project Settings.

#include "Turret.h"
#include "TankStatics.h"
#include "Runtime/Engine/Classes/Engine/World.h"

const FName ATurret::MuzzleSocketName(TEXT("Muzzle"));

// Sets default values
ATurret::ATurret()
{
	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	RootComponent = TurretDirection = CreateDefaultSubobject<UArrowComponent>(TEXT("TurretDirection"));

	TurretSprite = CreateDefaultSubobject<UPaperSpriteComponent>(TEXT("TurretSprite"));
	TurretSprite->SetupAttachment(TurretDirection);

	YawSpeed = 180.0f;
	Fire1Cooldown = 1.0f;
}

// Called when the game starts or when spawned
void ATurret::BeginPlay()
{
	Super::BeginPlay();

	check(GetParentComponent());
	Tank = Cast<ATank>(GetParentComponent()->GetOwner());
	check(Tank);
}

// Called every frame
void ATurret::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

	// Aim!
	check(TurretDirection);
	if (Tank)
	{
		if (APlayerController* PC = Cast<APlayerController>(Tank->GetController()))
		{
			FVector2D AimLocation;
			if (PC->GetMousePosition(AimLocation.X, AimLocation.Y))
			{
				FVector2D TurretLocation = FVector2D::ZeroVector;
				UGameplayStatics::ProjectWorldToScreen(PC, TurretDirection->GetComponentLocation(), TurretLocation);
				float DesiredYaw;
				if (UTankStatics::FindLookAtAngle2D(TurretLocation, AimLocation, DesiredYaw))
				{
					FRotator CurrentRotation = TurretDirection->GetComponentRotation();
					float DeltaYaw = UTankStatics::FindDeltaAngleDegrees(CurrentRotation.Yaw, DesiredYaw);
					float MaxDeltaYawThisFrame = YawSpeed * DeltaTime;

					// Perform the current frame's rotation.
					if (MaxDeltaYawThisFrame > FMath::Abs(DeltaYaw))
					{
						// We can get all the way to the desired angle, so finish the rotation.
						CurrentRotation.Yaw = DesiredYaw;
					}
					else
					{
						// We can't turn as far as we want, so turn as far as we can in that direction.
						CurrentRotation.Yaw += (MaxDeltaYawThisFrame * FMath::Sign(DeltaYaw));
					}
					TurretDirection->SetWorldRotation(FRotator(CurrentRotation.Pitch, CurrentRotation.Yaw, CurrentRotation.Roll));
				}
			}
		}

		// Handle input.
		const FTankInput& CurrentInput = Tank->GetCurrentInput();
		if (CurrentInput.bFire1 && Projectile)
		{
			if (UWorld* World = GetWorld())
			{
				float CurrentTime = World->GetTimeSeconds();
				if (Fire1ReadyTime <= CurrentTime)
				{
					FVector Loc = TurretSprite->GetSocketLocation(MuzzleSocketName);
					FRotator Rot = TurretDirection->GetComponentRotation();

					if (AActor* NewProjectile = World->SpawnActor(Projectile))
					{
						NewProjectile->SetActorLocation(Loc);
						NewProjectile->SetActorRotation(Rot);
					}

					// Set the cooldown timer.
					Fire1ReadyTime = CurrentTime + Fire1Cooldown;
				}
			}
		}
	}
}

In the picture the yellow arrow is my TankDirection and the orange arrow is my TurretDirection. I have been working for hours trying to figure out how to fix it, but I still have no clue. Any help, answers or ideas would be greatly appreciated.