Rewrote the pulseIn to use micros() instead of loop counting.
Be aware that micros() always round its value to a multiple of 4.
Counting the loops in pulsein works quite well, however if there are interrupt handled during this it will definitely give a wrong (too low) reading. This could (partially) explain why you need a smaller divisor in your formulas.
This "trick" is used especially to be able to read pulselengths smaller than 4 micros() precission.
Hope to see the code soon!