diff --git a/src/com/savoirfairelinux/sflphone/model/BubbleModel.java b/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
index 9d8f0e0..f59282f 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubbleModel.java
@@ -10,7 +10,8 @@
 	public int width, height;
 	public ArrayList<Bubble> listBubbles = new ArrayList<Bubble>();
 
-	private static final float BUBBLE_SPEED = 4.f;
+	private static final double BUBBLE_RETURN_TIME_HALF_LIFE = .25;
+	private static final double BUBBLE_RETURN_TIME_LAMBDA = Math.log(2)/BUBBLE_RETURN_TIME_HALF_LIFE;
 
 	public void update()
 	{
@@ -20,7 +21,7 @@
 		if (lastUpdate > now)
 			return;
 
-		float dt = (float) Math.min((now - lastUpdate) / 1000000000.0, .2);
+		double dt = Math.min((now - lastUpdate) / 1000000000.0, .2);
 		lastUpdate = now;
 
 		//Log.w(TAG, "update dt="+dt);
@@ -31,11 +32,12 @@
 			Bubble b = listBubbles.get(i);
 			//Log.w(TAG, "update b");
 			if(!b.dragged && b.attractor != null) {
-				float bx=b.getPosX(), by=b.getPosY();
-				float dx = (b.attractor.x - bx) * dt * BUBBLE_SPEED;
-				float dy = (b.attractor.y - by) * dt * BUBBLE_SPEED;
+				double bx=b.getPosX(), by=b.getPosY();
+				double edt = -Math.expm1(-BUBBLE_RETURN_TIME_LAMBDA*dt);
+				double dx = (b.attractor.x - bx) * edt;
+				double dy = (b.attractor.y - by) * edt;
 				//Log.w(TAG, "update dx="+dt+" dy="+dy);
-				b.setPos(bx+dx, by+dy);
+				b.setPos((float)(bx+dx), (float)(by+dy));
 			}
 		}
 	}
diff --git a/src/com/savoirfairelinux/sflphone/model/BubblesView.java b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
index 9853731..3ce9439 100644
--- a/src/com/savoirfairelinux/sflphone/model/BubblesView.java
+++ b/src/com/savoirfairelinux/sflphone/model/BubblesView.java
@@ -161,11 +161,11 @@
 				Canvas c = null;
 				try {
 					c = surfaceHolder.lockCanvas(null);
+
+					// for the case the surface is destroyed while already in the loop
+					if(c == null || model == null) continue;
+
 					synchronized (surfaceHolder) {
-
-						// for the case the surface is destroyed while already in the loop
-						if(c == null || model == null) continue;
-
 						//Log.w(TAG, "Thread doDraw");
 						model.update();
 						doDraw(c);
@@ -198,17 +198,6 @@
 			}
 		}
 
-		/*private void updatePhysics()
-		{
-			long now = System.currentTimeMillis();
-
-			// Do nothing if lastUpdate is in the future.
-			if (model.lastUpdate > now)
-				return;
-
-			double elapsed = (now - model.lastUpdate) / 1000.0;
-		}
-		 */
 		private void doDraw(Canvas canvas)
 		{
 			canvas.drawColor(Color.WHITE);
