@mrjj Sorry for not mentioning this before, I already tried a Gaussian Blur, it didn't help. The data is have is in the form: (xCood, yCood, zCood, value) For the first phase I am ignoring zCood. The problem comes with the sample data granuality as data is something like: (0,0), (0,100)..............(0,1500) (100, 0).(100,100)........(100,1500) ..... ..... (1500, 0).(1500,100)........(1500,1500) I have a canvas of 1500x1500 The image before gaussian (The border is part of a layer above the image, so they aren't going anywhere soon): After Gaussian Blurring (and some some interpolation on my part)(the data is a little different in both cases and I have done this in a separate application): As you can see, the output still has some boxiness to it. Also, doing it like this is just removing the sharpness of the image [it is eventually meant to be used to visualize input data not be a sunset image. Not to mention I am going too far with the blurring here making it really heavy for a repaint]. EDIT: Forgot to mention, I am using a continuous hue change here w.r.t value. But it seems that the proposal is for limited number of colors making the output even more blocky and blurring even more useless. EDIT 2: I eventually used the 2D shader for openGL. Latest output: Seems the most promising one yet