{
EvPrintOperation *op = EV_PRINT_OPERATION (print);
cairo_t *cr;
+ gdouble cr_width, cr_height;
+ gint width, height;
gtk_print_operation_set_defer_drawing (print->op);
ev_job_print_set_page (EV_JOB_PRINT (print->job_print), page);
cr = gtk_print_context_get_cairo_context (context);
- ev_job_print_set_cairo (EV_JOB_PRINT (print->job_print), cr);
+ cr_width = gtk_print_context_get_width (context);
+ cr_height = gtk_print_context_get_height (context);
+ ev_page_cache_get_size (ev_page_cache_get (op->document),
+ page, 0, 1.0,
+ &width, &height);
+ cairo_scale (cr, cr_width / (gdouble)width, cr_height / (gdouble)height);
+ ev_job_print_set_cairo (EV_JOB_PRINT (print->job_print), cr);
ev_job_scheduler_push_job (print->job_print, EV_JOB_PRIORITY_NONE);
}