diff --git a/src/components/Chart/__test__/chart.spec.js b/src/components/Chart/__test__/chart.spec.js
index dcfbf399f..e2c6102eb 100644
--- a/src/components/Chart/__test__/chart.spec.js
+++ b/src/components/Chart/__test__/chart.spec.js
@@ -1,12 +1,12 @@
import React from 'react';
import { mount } from 'enzyme';
-import ChartJS from 'chart.js';
+import ChartJS from '../chart';
import { Chart } from '../index';
import Dataset from '../../Dataset';
jest.mock('../helpers/unregisterGlobalPlugins', () => jest.fn());
-jest.mock('chart.js', () =>
+jest.mock('../chart', () =>
jest.fn(() => ({
update: jest.fn(),
config: {},
diff --git a/src/components/Chart/chart.js b/src/components/Chart/chart.js
new file mode 100644
index 000000000..710614d3e
--- /dev/null
+++ b/src/components/Chart/chart.js
@@ -0,0 +1,55 @@
+/* eslint-disable no-underscore-dangle */
+import Chart from 'chart.js';
+
+const maxRadius = 20;
+const getRadius = (height, width) => {
+ const min = Math.min(height, width);
+ if (maxRadius > min / 2) {
+ return min / 2;
+ }
+ return maxRadius;
+};
+
+function drawRectVertical(context, view) {
+ const { x, y, base, width } = view;
+ const left = x - width / 2;
+ const height = base - y;
+ const radius = getRadius(height, width);
+ context.moveTo(left + radius, y);
+ context.lineTo(left + width - radius, y);
+ context.quadraticCurveTo(left + width, y, left + width, y + radius);
+ context.lineTo(left + width, base);
+ context.lineTo(left, base);
+ context.lineTo(left, y + radius);
+ context.quadraticCurveTo(left, y, left + radius, y);
+}
+
+function drawRectHorizontal(context, view) {
+ const { x, y, base, height } = view;
+ const width = x;
+ const top = y - height / 2;
+ const radius = getRadius(height, width);
+ context.moveTo(x - radius, top);
+ context.quadraticCurveTo(x, top, x, top + radius);
+ context.lineTo(x, top + height - radius);
+ context.quadraticCurveTo(x, top + height, x - radius, top + height);
+ context.lineTo(base, top + height);
+ context.lineTo(base, top);
+ context.lineTo(top - radius, top);
+}
+
+Chart.elements.Rectangle.prototype.draw = function drawRect() {
+ const context = this._chart.ctx;
+ const view = this._view;
+ context.beginPath();
+ context.fillStyle = view.backgroundColor;
+ context.strokeStyle = view.borderColor;
+ if (view.horizontal) {
+ drawRectHorizontal(context, view);
+ } else {
+ drawRectVertical(context, view);
+ }
+ context.fill();
+};
+
+export default Chart;
diff --git a/src/components/Chart/index.js b/src/components/Chart/index.js
index c3e126ec9..5b019a2e9 100644
--- a/src/components/Chart/index.js
+++ b/src/components/Chart/index.js
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
-import ChartJS from 'chart.js';
import { withTheme } from 'styled-components';
+import ChartJS from './chart';
import resolveOptions from './resolveOptions';
import resolveDatasets from './resolveDatasets';
import StyledContainer from './styled/container';
diff --git a/src/components/Chart/readme.md b/src/components/Chart/readme.md
index 6769470e0..5d8f71a2d 100644
--- a/src/components/Chart/readme.md
+++ b/src/components/Chart/readme.md
@@ -184,6 +184,156 @@ class BarChartExample extends React.Component {