Setting vtkLookupTable ramp seems to have no effect

My C++ app displays a topographic surface, and I want color to indicate elevation. I create a lookup table from 11 discrete colors. I would like the displayed color of each pixel to represent the linear interpolation between adjacent indices in the color table, but the display shows just the 11 discrete colors in the table, i.e. the colors are binned by elevation. The display should look like this:

But instead it looks like this, i.e. colors are ‘binned’ by elevation:

Here is my code that builds the lookup table:

// Populate color series

for (int i = 0; i < nColors; i++) {

  sprintf(nameBuf, "color-%d", i);

  vtkStdString name(nameBuf);
  colors->SetColor(name, haxbyRed[nColors-i], haxbyGreen[nColors-i], haxbyBlue[nColors-i]);

  colorSeries->SetColor(i, colors->GetColor3ub(name));

// Build the lookup table
colorSeries->BuildLookupTable(lut, colorSeries->ORDINAL);

// Set linear ramp 

I’ve tried lut->SetRamptoSQRT() and lut->SetRampToSCurve() as well - with no difference in the output display, i.e. just 11 discrete binned colors are displayed.
Anyone know what am I doing wrong?