diff --git a/contrib/mobile/iOS/Onelab/DetailViewController.mm b/contrib/mobile/iOS/Onelab/DetailViewController.mm
index 9ba0fbb9ae9838117e379527fbf05d739dd77811..d5e17e5d62d29a5761570709c74f70c175170fbf 100644
--- a/contrib/mobile/iOS/Onelab/DetailViewController.mm
+++ b/contrib/mobile/iOS/Onelab/DetailViewController.mm
@@ -56,9 +56,19 @@
 - (IBAction)pinch:(UIPinchGestureRecognizer *)sender
 {
     if([sender numberOfTouches] != 2) return;
-    scaleFactor *= [sender scale];
-    scaleFactor = MAX(0.1, scaleFactor);
-    glView->mContext->eventHandler(2,scaleFactor);
+    float mScale;
+    if (sender.state == UIGestureRecognizerStateBegan)
+        mScale = scaleFactor;
+    else if(sender.state == UIGestureRecognizerStateChanged)
+        mScale = scaleFactor * [sender scale];
+    else if(sender.state == UIGestureRecognizerStateEnded){
+        scaleFactor *= [sender scale];
+        mScale = scaleFactor;
+    }
+    else
+        mScale = 1.0f;
+    mScale = MAX(0.1, mScale);
+    glView->mContext->eventHandler(2,mScale);
     [glView drawView];
 }
 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event