diff --git a/core/document.cpp b/core/document.cpp --- a/core/document.cpp +++ b/core/document.cpp @@ -1303,6 +1303,7 @@ QRect requestRect = r->isTile() ? r->normalizedRect().geometry( r->width(), r->height() ) : QRect( 0, 0, r->width(), r->height() ); TilesManager *tilesManager = r->d->tilesManager(); + const double normalizedArea = r->normalizedRect().width() * r->normalizedRect().height(); // If it's a preload but the generator is not threaded no point in trying to preload if ( r->preload() && !m_generator->hasFeature( Generator::Threaded ) ) @@ -1328,8 +1329,10 @@ m_pixmapRequestsStack.pop_back(); delete r; } - // If the requested area is above 8000000 pixels, switch on the tile manager - else if ( !tilesManager && m_generator->hasFeature( Generator::TiledRendering ) && (long)r->width() * (long)r->height() > 8000000L ) + // If the requested area is above 8000000 pixels, and we're not rendering most of the page, switch on the tile manager + else if ( !tilesManager && m_generator->hasFeature( Generator::TiledRendering ) && + (long)r->width() * (long)r->height() > 8000000L && + normalizedArea < 0.75 && normalizedArea != 0 ) { // if the image is too big. start using tiles qCDebug(OkularCoreDebug).nospace() << "Start using tiles on page " << r->pageNumber()