diff --git a/contrib/mobile/drawContext.cpp b/contrib/mobile/drawContext.cpp
index 02288084b169b3169148b7ef6a649164666320e5..7727740e6dccfdc5d18b9833bd03c2591606f331 100644
--- a/contrib/mobile/drawContext.cpp
+++ b/contrib/mobile/drawContext.cpp
@@ -170,11 +170,20 @@ void drawContext::OrthofFromGModel()
 {
 	SBoundingBox3d bb = GModel::current()->bounds();
 	double ratio = (double)(this->_width ? this->_width : 1.) / (double)(this->_height ? this->_height : 1.);
+	double bbRation = (bb.max().x() - bb.min().x()) / (bb.max().y() - bb.min().y());
 	double xmin = -ratio, xmax = ratio, ymin = -1., ymax = 1.;
-	xmin = bb.min().x();
-	xmax = bb.max().x();
-	ymin = bb.min().x() / ratio;
-	ymax = bb.max().x() / ratio;
+	if(bbRation < 1) {
+		xmin = bb.min().y() * ratio + bb.max().x() + bb.min().x();
+		xmax = bb.max().y() * ratio + bb.max().x() + bb.min().x();
+		ymin = bb.min().y() + bb.max().y() + bb.min().y();
+		ymax = bb.max().y() + bb.max().y() + bb.min().y();
+	}
+	else {
+		xmin = bb.min().x() + bb.max().x() + bb.min().x();
+		xmax = bb.max().x() + bb.max().x() + bb.min().x();
+		ymin = bb.min().x() / ratio + bb.max().y() + bb.min().y();
+		ymax = bb.max().x() / ratio + bb.max().y() + bb.min().y();
+	}
 	xmax += (xmax - xmin) / 5.;
 	xmin -= (xmax - xmin) / 5.;
 	ymax += (ymax - ymin) / 5.;