It might be easier to convert your Screen Space coords to World Space. This way you get the center of the screen as a starting point (Where your crosshair is) but convert it to world space so that it works in game.
Create a Blueprint Interface for your HUD called BPI_HUD with a Function called Get Screen Center then add an Output called ScreenCenterCoords and make it a Vector 2D. Then inside your HUD, add the interface and create a new variable called ScreenCenterCoordinates and make it a Vector 2D also. Then Set the ScreenCenterCoordinates variable after Event Receive Draw HUD, Split the Struct pin on the input pin and plug in the normal Size X and Y divided by 2 (to get the center of the screen).
Then double click on the GetScreenCenter under the Interfaces tab in your HUD and drag and drop the ScreenCenterCoordinates variable onto the input pin of the Return Node.
Finally inside your character create a function called ShootGun and inside this the first thing you want to do is get a reference to the player controller, then Get HUD then Get Screen Center from the HUD. Split the Struct Pin on the output and then from the player controller drag out and ConvertScreenLocationToWorldSpace and plug your X and Y from the GetScreenCenter node into the X and Y on the ConvertScreenLocationToWorldSpace.
This way you’re getting the screen center but converting it to WorldSpace which should solve your aiming issue.
Now you can use the WorldLocation as the starting point of your line trace and as normal, calculate the End point from the Camera’s World Rotation, Forward Vector, Multiplied by a Float for the distance of the trace and then add that to the World Location and plug it into the End of the line trace. Accurate aiming without the need for a double line trace.