--- llviewermessage.cpp.orig	2009-04-25 14:32:18.000000000 +0200
+++ llviewermessage.cpp	2009-04-25 14:32:23.000000000 +0200
@@ -2719,6 +2719,10 @@
 	// appropriate.
 	LLVector3 shift_vector = regionp->getPosRegionFromGlobal(
 		gAgent.getRegion()->getOriginGlobal());
+	// don't shift objects, if teleporting more than about 1000 sims, as
+	// for long teleports shifting objects garbles the view at the target region
+	if (shift_vector.lengthSquared() > 6.5e10f)
+		shift_vector = LLVector3::zero;
 	gAgent.setRegion(regionp);
 	gObjectList.shiftObjects(shift_vector);
 	gAssetStorage->setUpstream(msg->getSender());
