Indeed what you get is normal. When you specify the precision 3 the texte size should be specify in pixel. You need to do something like:
{
TCanvas *C = new TCanvas("C","C",800,800);
auto frame = gPad->DrawFrame(-4.,0.,4.,350);
frame->GetXaxis()->SetLabelFont(43);
frame->GetXaxis()->SetLabelSize(30);
}