Dear Dan,
It looks as a sort of known issue (cfr: Odd behaviour using DrawOption("F")). I have asked some roofit experts to comment.
In the meanwhile, as a possible workaround, redrawing the background with a separate name seems to do the job:
gx.plotOn(frame1,Normalization( n_phys_sig.getVal() , RooAbsReal::NumEvent ) ,
RooFit::DrawOption("F") , RooFit::FillColor(46) , Name("gx_phys") , Invisible() ) ;
px.plotOn(frame1,Normalization( n_phys_bg.getVal() , RooAbsReal::NumEvent ) ,
RooFit::DrawOption("F") , RooFit::FillColor(46) , AddTo("gx_phys")) ;
data->plotOn(frame1) ;
px.plotOn(frame1,Normalization( n_phys_bg.getVal() , RooAbsReal::NumEvent ) ,
RooFit::DrawOption("F") , RooFit::FillColor(46) , Name("px_phys")) ;
Hope it helps.
G Ganis