Not really sure why you are converting to screen and then to world. Why not just get the aim socket location in world space and feed that into the start location. You could also use that location adding a forward vector of the gun multiplied by range (a float) to get the and of the trace.