Drawing problems

#define SDL_MAIN_HANDLED
#include <SDL.h>
#define WINDOWW 640
#define WINDOWH 400
#define AND &&
#define OR ||
SDL_Window*SDLWindow=NULL;
SDL_Renderer*SDLRenderer=NULL;
SDL_Texture*GEMScreen=0;
SDL_Rect SRC,DST;
int kolor=0,wyp=0,h,v;
#define PUT(x,y) {map[x+y*w]=kolor;srand(wyp*1000+(x%16)+(y%16)); if(!wyp OR rand()%2) ekr[x+y*w]=kolor;else ekr[x+y*w]=-1;}
void fill(int x,int y,int wyp) {
  Uint32 ekr[WINDOWW*WINDOWH],map[WINDOWW*WINDOWH],k;
  Uint8 ok=1;
  int dx=1,dy=1,s;	//kierunki skanowania
  int py=y,px=x,px0=x,w=WINDOWW,gl=x,gp=x;
  SRC.x=0;SRC.y=0;SRC.w=WINDOWW;SRC.h=WINDOWH;SDL_RenderReadPixels(SDLRenderer,&SRC,SDL_PIXELFORMAT_RGBA32,ekr,WINDOWW*4);
  SDL_RenderReadPixels(SDLRenderer,&SRC,SDL_PIXELFORMAT_RGBA32,map,WINDOWW*4);
  k=ekr[x+y*w];	//kolor tla
  for(s=0;s<=1;s++){	//etapy skanowania
    while(ok AND y>=0 AND y<WINDOWH){
	  while(map[x+y*w]==k AND x<WINDOWW){
	    if(dx>0)gp=x;else gl=x;
        PUT(x,y)
        x+=dx;
  	  }
      dx=-dx;x=px+dx;
      while(map[x+y*w]==k AND x>=0){
        if(dx>0)gp=x;else gl=x;
        PUT(x,y)
        x+=dx;
  	  }
      x-=dx;ok=0;y+=dy;dx=-dx;
      for(x;x<=gp;x++)if(map[x+y*w]==k){ok=1;break;}	//szukanie k
      if(ok)px=x;
	}
    x=px=px0;y=py-1;dy=-dy;ok=map[x+y*w]==k;gl=gp=x;
  }
  SDL_UpdateTexture(GEMScreen,NULL,ekr,w*4);
}

void pbox(int x,int y,int x1,int y1){
  SDL_SetRenderDrawColor(SDLRenderer,255,255,255,255);
  DST.x=x;DST.y=y;DST.w=(x1)-(x)+1;DST.h=(y1)-(y)+1;SDL_RenderFillRect(SDLRenderer,&DST);
  SDL_SetRenderDrawColor(SDLRenderer,0,0,0,0);
  SDL_RenderDrawRect(SDLRenderer,&DST);
  fill(x+(x1-x)/2,y+(y1-y)/2,wyp);
SDL_RenderDrawPoint(SDLRenderer,x+(x1-x)/2,y+(y1-y)/2);
//SDL_SetRenderTarget(SDLRenderer,GEMScreen);
}

void menu(){
  SDL_SetRenderTarget(SDLRenderer,GEMScreen);
  SDL_SetRenderDrawColor(SDLRenderer,255,0,0,255);
  SDL_RenderClear(SDLRenderer);
  SDL_SetRenderDrawColor(SDLRenderer,0,0,0,0);
  for(v=0;v<=5;v++){
    for(h=0;h<=5;h++){
      pbox(390+h*36+36,v*36-28+36,30+390+h*36+36,28+v*36-28+36);
      wyp++;
	}
  }

}

int main(int argc,char**argv){
	if(SDL_Init(SDL_INIT_EVERYTHING) != 0) {puts(SDL_GetError());exit(1);}
	SDL_SetHint(SDL_HINT_RENDER_VSYNC, "1");
	SDL_CreateWindowAndRenderer(WINDOWW,WINDOWH, 0, &SDLWindow, &SDLRenderer);
	SDL_RenderClear(SDLRenderer);
    GEMScreen=SDL_CreateTexture(SDLRenderer,SDL_PIXELFORMAT_RGBA32,SDL_TEXTUREACCESS_TARGET,WINDOWW,WINDOWH);
    menu();
DST.x=10;DST.y=10;DST.w=100;DST.h=100;SDL_RenderDrawRect(SDLRenderer,&DST);
SDL_SetRenderTarget(SDLRenderer,0);
SDL_RenderCopy(SDLRenderer,GEMScreen,NULL,NULL);
SDL_RenderPresent(SDLRenderer);
SDL_Delay(3000);
}

The program is not working properly. After adding SetTarget on line 50 (in void pbox) it works fine. What is it about ??
It’s a piece of code from another program and it still works wrong if I add SetTarget right after calling “pbox”.