Can I make delayMicroseconds more accurate?
As explained in the previous answers, your actual problem is not the
accuracy of delayMicroseconds(), but rather the resolution of
micros().

However, to answer your actual question, there is a more accurate
alternative to delayMicroseconds(): the function _delay_us() from
the AVR-libc is cycle-accurate and, for example



_delay_us(1.125);


does exactly what it says. The main caveat is that the argument has to
be a compile-time constant. You have to #include &lt;util/delay.h&gt; in
order to have access to this function.

Note also that you have to block the interrupts if you want any kind of
accurate delay.

Edit: As an example, if I were to generate a 4&nbsp;µs pulse on PD2
(pin 19 on the Mega), I would proceed as follows. First, notice that the
following code

noInterrupts();
PORTD |= _BV(PD2);   // PD2 HIGH
PORTD &amp;= ~_BV(PD2);  // PD2 LOW
interrupts();


makes a 0.125&nbsp;µs long pulse (2&nbsp;CPU cycles), because that's the
time it takes to execute the instruction that sets the port LOW. Then,
just add the missing time in a delay:

noInterrupts();
PORTD |= _BV(PD2);   // PD2 HIGH
_delay_us(3.875);
PORTD &amp;= ~_BV(PD2);  // PD2 LOW
interrupts();


and you have a cycle-accurate pulse width. It is worth noting that this
cannot be achieved with digitalWrite(), as a call to this function
takes about 5&nbsp;µs.