An image is updated on a bi-stable display (310) such as an electrophoretic display in a transition from a current image state to a subsequent image state. A voltage waveform (600, 620, 640, 660; 700, 720, 740, 760) is selected based on the current and subsequent image states, and a previous image state. The bi-stable display (310) is driven from the current image state to the subsequent image state using the selected voltage waveform. For a given transition from the current to the next image state, different waveforms are stored for different previous states, e.g., black, dark grey, light grey and white. The different waveforms may have different drive pulse (DR) or reset pulse (RE1, RE2) energies. In a trial and error optimization process, different waveforms with different reset and/or drive pulse energies are tested for different previous image states to see which waveform yields the smallest greyscale error. |