diff --git a/lime/_backend/html5/HTML5Window.hx b/lime/_backend/html5/HTML5Window.hx
index 23bcca422..46e8f71cd 100644
--- a/lime/_backend/html5/HTML5Window.hx
+++ b/lime/_backend/html5/HTML5Window.hx
@@ -389,29 +389,42 @@ class HTML5Window {
} else {
- var scaleX = element.clientWidth / setWidth;
- var scaleY = element.clientHeight / setHeight;
+ var scaleX = (setWidth != 0) ? (element.clientWidth / setWidth) : 1;
+ var scaleY = (setHeight != 0) ? (element.clientHeight / setHeight) : 1;
- var currentRatio = scaleX / scaleY;
- var targetRatio = Math.min (scaleX, scaleY);
+ var targetW = element.clientWidth;
+ var targetH = element.clientHeight;
+ var marginLeft = 0;
+ var marginTop = 0;
+ if (scaleX < scaleY)
+ {
+ targetH = Math.floor(setHeight * scaleX);
+ marginTop = Math.floor((element.clientHeight - targetH) / 2);
+ }
+ else
+ {
+ targetW = Math.floor(setWidth * scaleY);
+ marginLeft = Math.floor((element.clientWidth - targetW) / 2);
+ }
+
if (canvas != null) {
if (element != cast canvas) {
- canvas.style.width = setWidth * targetRatio + "px";
- canvas.style.height = setHeight * targetRatio + "px";
- canvas.style.marginLeft = ((element.clientWidth - (setWidth * targetRatio)) / 2) + "px";
- canvas.style.marginTop = ((element.clientHeight - (setHeight * targetRatio)) / 2) + "px";
+ canvas.style.width = targetW + "px";
+ canvas.style.height = targetH + "px";
+ canvas.style.marginLeft = marginLeft + "px";
+ canvas.style.marginTop = marginTop + "px";
}
} else {
- div.style.width = setWidth * targetRatio + "px";
- div.style.height = setHeight * targetRatio + "px";
- div.style.marginLeft = ((element.clientWidth - (setWidth * targetRatio)) / 2) + "px";
- div.style.marginTop = ((element.clientHeight - (setHeight * targetRatio)) / 2) + "px";
+ div.style.width = targetW + "px";
+ div.style.height = targetH + "px";
+ div.style.marginLeft = marginLeft + "px";
+ div.style.marginTop = marginTop + "px";
}