Ended up omitting the integral term:
void AQControlledActor::PointAt(const bool isPointing)
{
// Get the actor's location
FVector ShipForward = -SkeletalMesh->GetForwardVector();
FVector CameraForward = Camera->GetForwardVector();
// Calculate the torque needed to rotate the ship towards the camera
FVector PointingVector = FVector::CrossProduct(ShipForward, CameraForward);
FVector AngularVelocity = SkeletalMesh->GetPhysicsAngularVelocityInRadians();
FVector TorqueVector = SkeletalMesh->ScaleByMomentOfInertia(Kp * PointingVector - Kd * AngularVelocity);
// Apply torque
SkeletalMesh->AddTorqueInRadians(TorqueVector);
//FVector ActorLocation = GetActorLocation();
//DrawDebugLine(GetWorld(), ActorLocation, ActorLocation + ShipForward * 1000,
// FColor::Blue, false, 1, 0, 5);
//DrawDebugLine(GetWorld(), ActorLocation, ActorLocation + CrossVector * 1000,
// FColor::Yellow, false, 1, 0, 5);
//DrawDebugLine(GetWorld(), ActorLocation, ActorLocation + AngularVelocity * 1000,
// FColor::Orange, false, 1, 0, 5);
//DrawDebugLine(GetWorld(), ActorLocation, ActorLocation + TorqueVector * 100,
// FColor::Red, false, 1, 0, 5);
}