An image forming engine has color shifting amount storage units C, M, Y, and K (black) which store actual shifting amounts relative to ideal scan directions on image carriers C, M, Y, and K in image forming units C, M, Y, and K. Color shifting correction amount arithmetic units calculate color shifting correction amounts for respective color components to base on the stored color shifting amounts. Color shifting correction units C, M, Y, and K perform color shifting correction by converting coordinates upon reading out image data from
bitmap memories C, M, Y, and K on the basis of the calculated color shifting correction amounts, and then perform tone correction. Data after tone correction undergo
halftone processing by
halftone processors. C, M, Y, and K to suppress moire. PWM processors C, M, Y, and K generate
PWM signals for scanning, and output them to
exposure units C, M, Y, and K of the respective image forming units.