If you generate a custom appearance there is no way for PDFNet to regenerate that appearance (e.g. when annotation is scalled), since it does not know how you build the appearance.
At the same time since you customization seems to be small (just a color change) you may be able to chage the default appearance by changing the “DA” (Default Appearance) string in annotation dictionary for FreeText annotation:
Please note that although this article talks about form fields, the same applies to FreeText annotation since it also supports DA entry (Table 174 in ISO 32000 PDF spec).
While the previous post works for built in fonts, if you want to use a font registered with the OS, then the following code will do this. If you want to use a completely custom font, then you would just replace the Font.Create call with the one matching the font file you want to load, and use the explicit font path. Or, use the PDFNet.AddFontSubst API to override system font loading.
// Create font and add to annotations DR/Fonts entry
string fontDRName = "F0"; // arbitrary ID
Font font = Font.Create(mPDFView.GetDoc(), "Comic Sans", textAnnot.GetContents());
Obj annotObj = textAnnot.GetSDFObj();
Obj drDict = annotObj.PutDict("DR");
Obj fontDict = drDict.PutDict("Font");
fontDict.Put(fontDRName, font.GetSDFObj());
textAnnot.GetSDFObj().PutString("DA", String.Format("/{0} 12 Tf 0 0 1 rg ", fontDRName));
textAnnot.RefreshAppearance();