Trying to figure out how to update my libraries to not use dtostrf.

Print out the integer part as an integer, then print out the decimal part by subtracting the integer part. Watch out for negative numbers and zero-padding.

Or just use something like this. I assume you have a 'print this charcater at x,y' function

// note that the lenght of the ouput will be maxdigits +1.
// f must be positive
// maxDigits must be at least 1 greater than decimals.
void printfixedpoint(float f, int x, int y, int maxDigits, int decimals) {
  for(i = 0; i<decimals; i++) {
    f *= 10;
  }

  long l = f+.5; // add .5 for rounding 
  x += maxDigits+1; // one past the end
  for(int i =0; i<maxDigits; i++) {
    if(i == decimals) {
      print('.', --x, y); // decimal point
    }
    
    if(i > decimals && l==0) {
      print(' ', --x, y); // leading blank
    }
    else {
      print((l % 10) + '0', --x, y); // a single digit
    }
  }
}