+static void
+ev_window_update_max_min_scale (EvWindow *window)
+{
+ gdouble dpi;
+ GtkAction *action;
+ gdouble min_width, min_height;
+ gdouble width, height;
+ gdouble max_scale;
+ gint rotation = ev_document_model_get_rotation (window->priv->model);
+
+ if (!window->priv->document)
+ return;
+
+ dpi = get_screen_dpi (window) / 72.0;
+
+ ev_document_get_min_page_size (window->priv->document, &min_width, &min_height);
+ width = (rotation == 0 || rotation == 180) ? min_width : min_height;
+ height = (rotation == 0 || rotation == 180) ? min_height : min_width;
+ max_scale = sqrt (PAGE_CACHE_SIZE / (width * dpi * 4 * height * dpi));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ ZOOM_CONTROL_ACTION);
+ ephy_zoom_action_set_max_zoom_level (EPHY_ZOOM_ACTION (action), max_scale * dpi);
+
+ ev_document_model_set_min_scale (window->priv->model, MIN_SCALE * dpi);
+ ev_document_model_set_max_scale (window->priv->model, max_scale * dpi);
+}
+