Finally, I have solved the problem. Just use the rectangle() function instead of patch() or fill() or area().
figure(1);
p1=plot([1 5],[2 7]);
hold on
p2=plot([1 5],[2 8],'r');
s1=rectangle('Position',[2 3 2 1],'Curvature',[0.0 0.0],'FaceColor',[0.8 0.8 0.8]);
s2=rectangle('Position',[1 2 2 1.5],'Curvature',[0.0 0.0],'FaceColor',[0.7 0.0 0.0]);
set(gca,'children',[p1 s2 s1 p2]);
set(gcf,'PaperPositionMode','auto');
set(gcf,'Units','centimeters','Position',[5 5 9 8]);
print('-dpng','-r800','image1');
Probably, there is some bug in Matlab when exporting overlapping fill (area, patch) regions to file.