Moving a particle also move World

Hi there,
here is a simple summary of what I am doing.
I want my modified version of the PostStepDoIt of an existing process to move my particle to the other side of a volume when it arrives at the boundary. I am simply adding an if with a ProposePosition within to an existing part of the code containing ProposeMomentumDirection and such (line 352 of G4UCNBoundaryProcess.cc if this helps).
The particle is at the right position at the next step, but it seems that when I move the particle it is also moving either the volume or the World, because this position is now within the volume I avoided.

Here is the code I am using for test purpose:

         double currentMinimumStep = 100.;
	  double newSafety;
	  double preStepLength = (iNav[hNavId])->CheckNextStep( theGlobalPoint, OldMomentum, currentMinimumStep, newSafety) ;

	  G4ThreeVector nextPosition = theGlobalPoint + (preStepLength+0.1)*OldMomentum;
	  G4VPhysicalVolume* thePhysVolume =
		  (iNav[hNavId])->LocateGlobalPointAndSetup(nextPosition);
	// safetyHelper->ReLocateWithinVolume(nextPosition);
	aParticleChange.ProposePosition(nextPosition);
	// aStep.GetPostStepPoint()->SetPosition(nextPosition);
	// thePhysVolume = (iNav[hNavId])->LocateGlobalPointAndSetup(nextPosition);
	return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);

The commented parts are what I already tested to solved the problem.

Here is some debug log

G4WT1 >    60    -6.48      -24     -460  1.57e-13        0        1        60       World StepLimiter
G4WT1 >  UCN at Boundary! 
G4WT1 >  vol1: World, vol2: VirtualLongGuide
G4WT1 >  Ekin:     156.94325435185neV
G4WT1 >  Pos:      (25,-459.51719197968)
G4WT1 >  Pos:      (-6.4768076426513,-24.14644824317,-459.51719197968)
G4WT1 >  MomDir:   (0.039190478891928,-0.74335503582773,0.66774800417057)
G4WT1 >  *** MicroRoughness Condition not satisfied *** 
G4WT1 > G4UCNBoundaryProcess -> BELOW critical velocity
Moving to World with new position: (30.0719,(-6.19845,-29.4262,-454.774))
G4WT1 >    61     -6.2    -29.4     -455  1.57e-13        0    0.181      60.2 VirtualLongGuide Transportation
G4WT1 >    62     -6.2    -29.5     -455  1.57e-13        0   0.0404      60.2 VirtualLongGuide UCNAbsorption

For the record, here is the code of the VirtualLongGuide the particle is supposed to avoid

G4double innerRadius_LongGuideTube = 25.*mm;
	G4double outerRadius_LongGuideTube = 30*mm;
	G4double hz_LongGuideTube = 500*mm;
	G4double startAngle_LongGuideTube = 0.*deg;
	G4double spanningAngle_LongGuideTube = 360.*deg;

	G4Tubs* solidLongGuide
	= new G4Tubs("LongGuide",
		innerRadius_LongGuideTube,
		outerRadius_LongGuideTube,
		hz_LongGuideTube,
		startAngle_LongGuideTube,
		spanningAngle_LongGuideTube);

	G4LogicalVolume* logicLongGuide = new G4LogicalVolume(solidLongGuide,
		fGuideMaterial,
		"LongGuide");

	new G4PVPlacement(0,
		G4ThreeVector(0,0,0),
		"VirtualLongGuide",
		logicLongGuide,
		fPhysiWorld,
		false,
		0);

Do you have any idea what could be happening?
Please fell free to ask any question or for any piece of my overall code that might help.
Thank you in advance