diff U3 C:/Users/Azazel/AppData/Local/Temp/SDL_render_sw.c-revBASE.svn003.tmp.c E:/CRM64Pro/ExtLib/sdl2/src/render/software/SDL_render_sw.c --- a/src/render/software/SDL_render_sw.c Tue Mar 29 13:14:50 2016 +++ b/src/render/software/SDL_render_sw.c Sun Apr 03 02:21:53 2016 @@ -366,11 +366,22 @@ { SW_RenderData *data = (SW_RenderData *) renderer->driverdata; SDL_Surface *surface = data->surface; + SDL_Rect final_clip = renderer->viewport; if (surface) { if (renderer->clipping_enabled) { - SDL_SetClipRect(surface, &renderer->clip_rect); + SDL_Rect new_rclip; + new_rclip = renderer->clip_rect; + new_rclip.x += final_clip.x; + new_rclip.y += final_clip.y; + SDL_IntersectRect(&(renderer->viewport), &new_rclip, &final_clip); + SDL_SetClipRect(surface, &final_clip); } else { - SDL_SetClipRect(surface, NULL); + if(final_clip.w == surface->w && final_clip.h == surface->h) { + SDL_SetClipRect(surface, NULL); + } + else { + SDL_SetClipRect(surface, &final_clip); + } } } return 0;