diff --git a/contrib/mobile/iOS/Onelab/EAGLView.mm b/contrib/mobile/iOS/Onelab/EAGLView.mm
index 31f2ecd1521bdd9ce0a3aff5d4eedb912feb0ad1..14a0ee9d1272075d61c3d60397bd1117eb8c762d 100644
--- a/contrib/mobile/iOS/Onelab/EAGLView.mm
+++ b/contrib/mobile/iOS/Onelab/EAGLView.mm
@@ -28,27 +28,24 @@
 //The GL view is stored in the nib file. When it's unarchived it's sent -initWithCoder:
 - (id)initWithCoder:(NSCoder*)coder
 {
-	int w = 320;
-	int h = 480;
-	
-	float ver = [[[UIDevice currentDevice] systemVersion] floatValue];
-	// You can't detect screen resolutions in pre 3.2 devices, but they are all 320x480
-	if (ver >= 3.2f)
-	{
-		UIScreen* mainscr = [UIScreen mainScreen];
-		w = mainscr.currentMode.size.width;
-		h = mainscr.currentMode.size.height;
-	}
     if ((self = [super initWithCoder:coder])) {
         // Get the layer
         CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
-		if ((w == 640 && h == 960) || (h == 1536 && w == 2048)) { // Retina display detected
+
+		int w = 320;
+		int h = 480;
+		if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2f) { // There is no retina display above 3.2
+			UIScreen* mainscr = [UIScreen mainScreen];
+			w = mainscr.currentMode.size.width;
+			h = mainscr.currentMode.size.height;
+		}
+		if ((w == 640 && h == 960) || (h == 1536 && w == 2048)) { // Retina display (iPhone or iPad/iPad mini)
 			self.contentScaleFactor = 2.0;
 			eaglLayer.contentsScale=2;
 		}
+
         eaglLayer.opaque = YES;
-        eaglLayer.drawableProperties =
-			[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO],
+        eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO],
 			 kEAGLDrawablePropertyRetainedBacking,
 			 kEAGLColorFormatRGBA8,
 			 kEAGLDrawablePropertyColorFormat, nil];
diff --git a/contrib/mobile/iOS/Onelab/ModelViewController.mm b/contrib/mobile/iOS/Onelab/ModelViewController.mm
index 18e5a92945163324a8222c0a1fa089276a3b7047..f73c148d714f83bb0971ea8372bee5295045f900 100644
--- a/contrib/mobile/iOS/Onelab/ModelViewController.mm
+++ b/contrib/mobile/iOS/Onelab/ModelViewController.mm
@@ -218,16 +218,19 @@
 -(void)prevAnimation { animation_prev(); [self requestRender]; }
 -(IBAction)pinch:(UIPinchGestureRecognizer *)sender
 {
-    if(!glView->rotate && [sender numberOfTouches] == 2) {
+    if(!glView->rotate && [sender numberOfTouches] <= 2) {
 		float mScale = scaleFactor;
 		if (sender.state == UIGestureRecognizerStateBegan)
 			mScale = scaleFactor;
 		else if(sender.state == UIGestureRecognizerStateChanged)
 			mScale = scaleFactor * [sender scale];
-		else if(sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled){
+		else if(sender.state == UIGestureRecognizerStateEnded){
 			scaleFactor *= [sender scale];
 			mScale = scaleFactor;
 		}
+		else if(sender.state == UIGestureRecognizerStateCancelled){
+			mScale = scaleFactor;
+		}
 		mScale = MAX(0.1, mScale);
 		glView->mContext->eventHandler(2,mScale);
 	}