diff --git a/src/gs-entbase/server/trigger_teleport.qc b/src/gs-entbase/server/trigger_teleport.qc
index fc9fa67e..9bee221d 100644
--- a/src/gs-entbase/server/trigger_teleport.qc
+++ b/src/gs-entbase/server/trigger_teleport.qc
@@ -69,7 +69,15 @@ trigger_teleport::Touch(entity eToucher)
 
 		if (eTarget) {
 			vector endpos = eTarget.origin + [0,0,16];
+			float flSpeed = vlen(eToucher.velocity);
+			makevectors(eToucher.angles);
+			eToucher.velocity = (v_forward * flSpeed);
+			eToucher.angles = eTarget.angles;
 			setorigin_safe(eToucher, endpos);
+
+			if (eToucher.flags & FL_CLIENT)
+				Client_FixAngle(eToucher, eToucher.angles);
+
 			NSLog("^2trigger_teleport::^3Touch^7: Teleported '%s' to `%v`", 
 				eToucher.netname, endpos);
 		} else {