Oh wait, we just compare ratio of preview with pictureAspectRatio, rather than screen size... I'm not sure if comparing overall area guarantees that preview covers the screen. (One example I can come up is: 1024 * 576 > 800 * 600, but 1024 * 576 doesn't cover 800 * 600).

Would it be better if we use `Math.max(...) > Math.max(...) && Math.min(...) > Math.min(...)` ?