We propose a colorization algorithm for grayscale images and videos that demands simple user scribbles on a selected set of source pixels. The proposed algorithm colorizes non source pixels by propagating the colors of source pixels. To achieve reliable colorization results, we adopt a prioritization approach, which colorizes large smooth regions first and small detailed regions later using a Gaussian pyramid of gradient images. At each level of the pyramid, we determine the priority of each non source pixel using the luminance similarities to neighboring pixels and the geometric proximities to source pixels. Then we repeatedly colorize the pixel with the highest priority by interpolating the colors of neighboring source pixels. Also, for video colorization, the proposed algorithm transfers the colors of the first frame to subsequent frames based on optical flow estimation. To correct incorrectly transferred colors, the accuracies of transferred colors are calculated, and inaccurate colors are refined using neighboring colors. Simulation results show that the proposed algorithm provides accurate and reliable colorization results. We also demonstrate that the proposed algorithm can be used for color restoration and recolorization.