        .attr("d", quline(j))
        .attr("class", "line")
        .attr("stroke", qucolors[j])
-
-  # special rectangles in the background
-  clickStatus = {}
-  index = {}
-  specialrects = svg.append("g")
-  for d in indindex
-    clickStatus[d] = 0
-    specialrects.append("rect")
-       .attr("x", xScale(d+0.5))
-       .attr("y", yScale(data.quant[nQuant-1][d]))
-       .attr("width", 2)
-       .attr("id", "rect#{data.ind[d]}")
-       .attr("height", yScale(data.quant[0][d]) - yScale(data.quant[nQuant-1][d]))
-       .attr("opacity", 0)
-       .attr("stroke", "none")
+       .attr("pointer-events", "none")
 
   # vertical rectangles representing each array
-  indRectGrp = svg.append("g")
+  indRectGrp = svg.append("g").attr("id", "indRect")
 
   indRect = indRectGrp.selectAll("empty")
                  .data(indindex)
                  .enter()
                  .append("rect")
-                 .attr("x", (d) -> xScale(d+0.5))
+                 .attr("x", (d) -> xScale(d) - recWidth/2)
                  .attr("y", (d) -> yScale(data.quant[nQuant-1][d]))
                  .attr("id", (d) -> "rect#{data.ind[d]}")
-                 .attr("width", 2)
+                 .attr("width", recWidth)
                  .attr("height", (d) ->
                     yScale(data.quant[0][d]) - yScale(data.quant[nQuant-1][d]))
                  .attr("fill", "purple")

     .attr("width", w-pad.left-pad.right)
     .attr("stroke", "none")
     .attr("fill", d3.rgb(200, 200, 200))

  # axis on left
  LaxisData = yScale.ticks(6)
  Laxis = svg.append("g")

  # axis: white lines
  Laxis.append("g").selectAll("empty")

     .attr("x", (d) -> xScale(d))
     .attr("dominant-baseline", "middle")
     .attr("text-anchor", "middle")

  # colors for quantile curves
  colindex = d3.range((nQuant-1)/2)
