diff --git a/sohstationviewer/conf/constants.py b/sohstationviewer/conf/constants.py
index a83be36509785de80f4a04f6ad6b28d6e20562ef..897f80eae262f8e35247c969efd0b6fa66279a63 100644
--- a/sohstationviewer/conf/constants.py
+++ b/sohstationviewer/conf/constants.py
@@ -126,6 +126,10 @@ MIN_FONTSIZE = 6
 MAX_FONTSIZE = 12
 # day total limit for all tps channels to stay in one tab
 DAY_LIMIT_FOR_TPS_IN_ONE_TAB = 180      # about half of a year
+
+# PLOTTING SIZE MAP
+SIZE_PIXEL_MAP = {'smaller': .5, 'normal': 2, 'bigger': 3}
+SIZE_UNICODE_MAP = {'smaller': '▼', 'normal': '', 'bigger': '▲'}
 # ================================================================= #
 #                      TYPING CONSTANT
 # ================================================================= #
diff --git a/sohstationviewer/view/db_config/value_color_helper/edit_value_color_dialog/multi_color_dot_dialog.py b/sohstationviewer/view/db_config/value_color_helper/edit_value_color_dialog/multi_color_dot_dialog.py
index c8117e1c9fb6fd13fff53dbef23ab18b82720f16..aa47c2d8746beac3d0dd19304f18ca39999f2a05 100644
--- a/sohstationviewer/view/db_config/value_color_helper/edit_value_color_dialog/multi_color_dot_dialog.py
+++ b/sohstationviewer/view/db_config/value_color_helper/edit_value_color_dialog/multi_color_dot_dialog.py
@@ -10,6 +10,8 @@ from sohstationviewer.view.db_config.value_color_helper.\
     edit_value_color_dialog.edit_value_color_dialog import \
     EditValueColorDialog, display_color
 
+from sohstationviewer.conf.constants import SIZE_PIXEL_MAP
+
 
 ROW_TOTAL = 7
 
@@ -49,7 +51,8 @@ class MultiColorDotDialog(EditValueColorDialog):
             or lower_bound
         """
         self.upper_equal = upper_equal
-
+        # list of combo boxes to display sizes of points
+        self.size_comboboxes: List[QtWidgets.QComboBox] = []
         # list of widgets to display lower bound which is read only of the
         # value range of rows
         self.lower_bound_lnedits: List[QtWidgets.QLineEdit] = []
@@ -99,13 +102,14 @@ class MultiColorDotDialog(EditValueColorDialog):
             if i == ROW_TOTAL - 1:
                 self.main_layout.addWidget(
                     self.include_greater_than_chkbox, ROW_TOTAL - 1, 0, 1, 1)
-            (lower_bound_lnedit, higher_bound_lnedit,
+            (size_combobox, lower_bound_lnedit, higher_bound_lnedit,
              select_color_btn, color_label) = self.add_row(i)
             if i == 0:
                 # We provide a default value for the first higher bound editor
                 # because it is the only one that is included in the saved
                 # value colors string by default.
                 higher_bound_lnedit.setText('0')
+            self.size_comboboxes.append(size_combobox)
             self.lower_bound_lnedits.append(lower_bound_lnedit)
             self.higher_bound_lnedits.append(higher_bound_lnedit)
             self.select_color_btns.append(select_color_btn)
@@ -142,6 +146,10 @@ class MultiColorDotDialog(EditValueColorDialog):
             higher bound line edit, select color button, display color label
         :param row_id: id of current row
         """
+        size_combobox = QtWidgets.QComboBox()
+        size_combobox.addItems(SIZE_PIXEL_MAP.keys())
+        size_combobox.setCurrentText('normal')
+
         lower_bound_lnedit = QtWidgets.QLineEdit()
         lower_bound_lnedit.setEnabled(False)
 
@@ -168,13 +176,15 @@ class MultiColorDotDialog(EditValueColorDialog):
         color_label.setAutoFillBackground(True)
 
         # layout
-        self.main_layout.addWidget(lower_bound_lnedit, row_id, 1, 1, 1)
-        self.main_layout.addWidget(comparing_label, row_id, 2, 1, 1)
-        self.main_layout.addWidget(higher_bound_lnedit, row_id, 3, 1, 1)
-        self.main_layout.addWidget(select_color_btn, row_id, 4, 1, 1)
-        self.main_layout.addWidget(color_label, row_id, 5, 1, 1)
-
-        return (lower_bound_lnedit, higher_bound_lnedit,
+        self.main_layout.addWidget(QtWidgets.QLabel('Size'), row_id, 1, 1, 1)
+        self.main_layout.addWidget(size_combobox, row_id, 2, 1, 1)
+        self.main_layout.addWidget(lower_bound_lnedit, row_id, 3, 1, 1)
+        self.main_layout.addWidget(comparing_label, row_id, 4, 1, 1)
+        self.main_layout.addWidget(higher_bound_lnedit, row_id, 5, 1, 1)
+        self.main_layout.addWidget(select_color_btn, row_id, 6, 1, 1)
+        self.main_layout.addWidget(color_label, row_id, 7, 1, 1)
+
+        return (size_combobox, lower_bound_lnedit, higher_bound_lnedit,
                 select_color_btn, color_label)
 
     def handle_clear_higher_bound(self, row_id):
@@ -360,7 +370,7 @@ class MultiColorDotDialog(EditValueColorDialog):
         """
         self.set_color_enabled(row_id, chkbox.isChecked())
 
-    def set_row(self, vc_idx: int, value: float, color: str):
+    def set_row(self, vc_idx: int, value: float, color: str, size_desc: str):
         """
         Add values to widgets in a row
             + row 0: consider uncheck include checkbox if color='not plot' and
@@ -374,6 +384,9 @@ class MultiColorDotDialog(EditValueColorDialog):
                 self.include_less_than_chkbox.setChecked(False)
             else:
                 self.include_less_than_chkbox.setChecked(True)
+
+        self.size_comboboxes[vc_idx].setCurrentText(size_desc)
+
         if vc_idx < ROW_TOTAL - 1:
             self.higher_bound_lnedits[vc_idx].setText(str(value))
             self.lower_bound_lnedits[vc_idx + 1].setText(str(value))
@@ -414,16 +427,22 @@ class MultiColorDotDialog(EditValueColorDialog):
             if i == 0 and not self.include_less_than_chkbox.isChecked():
                 color = 'not plot'
             operator = '<=' if self.upper_equal else '<'
-            value_color_list.append(f"{operator}{value}:{color}")
-        if self.include_greater_than_chkbox.isChecked():
+            size_desc = self.size_comboboxes[i].currentText()
+            size = f':{size_desc}' if size_desc != 'normal' else ''
+
+            value_color_list.append(f"{operator}{value}:{color}{size}")
 
+        if self.include_greater_than_chkbox.isChecked():
             color = self.color_labels[ROW_TOTAL - 1].palette().window(
                 ).color().name().upper()
             val = f"{self.lower_bound_lnedits[ROW_TOTAL - 1].text()}"
+            size_desc = self.size_comboboxes[ROW_TOTAL - 1].currentText()
+            size = f':{size_desc}' if size_desc != 'normal' else ''
+
             if self.upper_equal:
-                value_color_list.append(f"{val}<:{color}")
+                value_color_list.append(f"{val}<:{color}{size}")
             else:
-                value_color_list.append(f"={val}:{color}")
+                value_color_list.append(f"={val}:{color}{size}")
 
         self.value_color_str = '|'.join(value_color_list)
         self.accept()
@@ -460,17 +479,20 @@ class MultiColorDotLowerEqualDialog(MultiColorDotDialog):
         vc_parts = self.value_color_str.split('|')
         count = 0
         for vc_str in vc_parts:
-            value, color = vc_str.split(':')
+            vcs = vc_str.split(':')
+            value = vcs[0]
+            color = vcs[1]
+            size_desc = vcs[2] if len(vcs) > 2 else 'normal'
             if value.startswith('<'):
                 # Ex: <1:#00FFFF
                 # Ex: <0:not plot  (can be on first value only)
                 value = value.replace('<', '')
-                self.set_row(count, float(value), color)
+                self.set_row(count, float(value), color, size_desc)
                 count += 1
             else:
                 # Ex: =1:#FF00FF
                 value = value.replace('=', '')
-                self.set_row(ROW_TOTAL - 1, float(value), color)
+                self.set_row(ROW_TOTAL - 1, float(value), color, size_desc)
 
 
 class MultiColorDotUpperEqualDialog(MultiColorDotDialog):
@@ -504,17 +526,20 @@ class MultiColorDotUpperEqualDialog(MultiColorDotDialog):
         vc_parts = self.value_color_str.split('|')
         count = 0
         for vc_str in vc_parts:
-            value, color = vc_str.split(':')
+            vcs = vc_str.split(':')
+            value = vcs[0]
+            color = vcs[1]
+            size_desc = vcs[2] if len(vcs) > 2 else 'normal'
             if value.startswith('<='):
                 # Ex: <=1:#00FFFF
                 # Ex: <=0:not plot  (can be on first value only)
                 value = value.replace('<=', '')
-                self.set_row(count, float(value), color)
+                self.set_row(count, float(value), color, size_desc)
                 count += 1
             else:
                 # Ex: 1<:#FF00FF
                 value = value.replace('<', '')
-                self.set_row(ROW_TOTAL - 1, float(value), color)
+                self.set_row(ROW_TOTAL - 1, float(value), color, size_desc)
 
 
 if __name__ == '__main__':
diff --git a/sohstationviewer/view/db_config/value_color_helper/functions.py b/sohstationviewer/view/db_config/value_color_helper/functions.py
index 42e78ba68302685f644b749f4a5cfdbbfa936b5d..5d9684cdca04962f417614becb43f40b8354b834 100644
--- a/sohstationviewer/view/db_config/value_color_helper/functions.py
+++ b/sohstationviewer/view/db_config/value_color_helper/functions.py
@@ -1,43 +1,7 @@
 import re
 
-from sohstationviewer.view.util.color import clr
-
 from sohstationviewer.view.util.plot_type_info import plot_types
-
-
-def convert_value_color_str(
-        plot_type: str, old_value_color_str: str) -> str:
-    """
-    Convert value_color str to new format. This will be removed after
-        value_colors in database changed
-    linesDots: L:G|D:G => Line:#00FF00|Dot:#00FF00
-    upDownDots: 0:R|1:G => Down:#FF0000|Up:#00FF00
-    multiColorDotsEqualOnUpperBound:
-       0:_|1:Y|2:G|+2:M => <=0:not plot|<=1:#FFFF00|<=2:#00FF00|2<:#FF00FF
-    multiColorDotsEqualOnLowerBound:
-       3:R|3.3:Y|=3.3:G => <3:#FF0000|<3.3:#FFFF00|=3.3:#00FF00
-    triColorLines:
-       -1:M|0:R|1:G => -1:#FF00FF|0:#FF0000|1:#00FF00
-    :param plot_type: type of channel's plot
-    :param old_value_color_str: value_color_str in old format
-    :return: value_color_str in new format
-    """
-    if old_value_color_str == '':
-        return ''
-    value_color_list = []
-    if old_value_color_str == '' and plot_type == 'linesDots':
-        old_value_color_str = "L:G"
-    value_color_parts = old_value_color_str.split('|')
-    for c_str in value_color_parts:
-        val, color = c_str.split(':')
-        val = convert_value(plot_type, val)
-        if color == '_':
-            color = "not plot"
-        else:
-            if color in clr.keys():
-                color = clr[color]
-        value_color_list.append(f"{val}:{color}")
-    return '|'.join(value_color_list)
+from sohstationviewer.conf.constants import SIZE_UNICODE_MAP
 
 
 def convert_value(plot_type: str, old_value: str):
@@ -107,15 +71,16 @@ def prepare_value_color_html(value_colors: str) -> str:
     html_color_parts = []
     color_parts = value_colors.split('|')
     for c_str in color_parts:
-        value, color = c_str.split(':')
-        value = value.replace('<=', '&le;').replace('<', '&lt;')
-        if color == 'not plot':
+        vcs = c_str.split(':')
+        value = vcs[0].replace('<=', '&le;').replace('<', '&lt;')
+        size = f':{SIZE_UNICODE_MAP[vcs[2]]}' if len(vcs) > 2 else ''
+        if vcs[1] == 'not plot':
             c_html = f"{value}:not plot"
         else:
             c_html = (
                 f"{value}:"
-                f"<span style='color: {color}; font-size:25px;'>&#8718;"
-                f"</span>")
+                f"<span style='color: {vcs[1]}; font-size:25px;'>&#8718;"
+                f"</span>{size}")
 
         html_color_parts.append(c_html)
     value_color_html = f"<p>{'|'.join(html_color_parts)}</p>"
diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting.py b/sohstationviewer/view/plotting/plotting_widget/plotting.py
index d71957dcf9d5227f3bbdbe14c2ec91a0ed6804f7..d98ac4f8ff8fe8c0c7d216135b4a6c7708775589 100644
--- a/sohstationviewer/view/plotting/plotting_widget/plotting.py
+++ b/sohstationviewer/view/plotting/plotting_widget/plotting.py
@@ -57,8 +57,10 @@ class Plotting:
             ax: Optional[Axes] = None, equal_upper: bool = True):
         """
         plot dots in center with colors defined by valueColors in database:
-        Color codes are defined in colorSettings and limitted in 'valColRE'
-            in dbSettings.py
+
+        x position of each dot defined in value in points_list.
+        Color of each dot defined in hex in colors list.
+        Size of each dot defined in pixel in sizes list.
 
         :param c_data: data of the channel which includes down-sampled
             (if needed) data in keys 'times' and 'data'.
@@ -70,19 +72,21 @@ class Plotting:
         :return: ax in which the channel is plotted
         """
         if equal_upper:
-            points_list, colors = \
+            points_list, colors, sizes = \
                 get_categorized_data_from_value_color_equal_on_upper_bound(
                     c_data, chan_db_info)
         else:
-            points_list, colors = \
+            points_list, colors, sizes = \
                 get_categorized_data_from_value_color_equal_on_lower_bound(
                     c_data, chan_db_info)
         # flatten point_list to be x
         x = [item for row in points_list for item in row]
-        for points, c in zip(points_list, colors):
+        for points, c, s in zip(points_list, colors, sizes):
+            # use bar marker instead of dot to avoid overlap when selecting
+            # bigger size for dots.
             chan_plot, = ax.plot(
                 points, len(points) * [0], linestyle="",
-                marker='s', markersize=2,
+                marker='|', markersize=s, markeredgewidth=.75,
                 zorder=constants.Z_ORDER['DOT'],
                 color=c, picker=True, pickradius=3)
             ax.chan_plots.append(chan_plot)
diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting_helper.py b/sohstationviewer/view/plotting/plotting_widget/plotting_helper.py
index f6310b48b0ae3c4aeb88f9d20ab677d702ed54d2..deb52e0342bc3ad4b0efa1dd48b273cf6ab380b8 100644
--- a/sohstationviewer/view/plotting/plotting_widget/plotting_helper.py
+++ b/sohstationviewer/view/plotting/plotting_widget/plotting_helper.py
@@ -70,14 +70,14 @@ def get_masspos_value_colors(
 
 def get_categorized_data_from_value_color_equal_on_upper_bound(
         c_data: Dict, chan_db_info: Dict
-) -> Tuple[List[List[float]], List[str]]:
+) -> Tuple[List[List[float]], List[str], List[float]]:
     """
     Separate data points and color using valueColors in which the condition
     will check if value equal to or less than upper bound and greater than
     lower bound as following example
-        <=-1:not plot|<=0:#FF0000|0<:#FF00FF means:
+        <=-1:not plot|<=0:#FF0000:bigger|0<:#FF00FF means:
            value <= -1   => not plot
-           -1 < value <= 0 => plot with #FF0000 color
+           -1 < value <= 0 => plot with #FF0000 color in the bigger size
            0 < value  => plot with #FF00FF color
     :param c_data: dict of data of the channel which includes down-sampled
         data in keys 'times' and 'data'.
@@ -85,13 +85,19 @@ def get_categorized_data_from_value_color_equal_on_upper_bound(
     :return x: list of x to be plotted to get total samples
     :return colors: list of color to be plotted to decide color of total sample
         text.
+    :return sizes: list of sizes in pixel to plot for each points
     """
     prev_val = -constants.HIGHEST_INT
     value_colors = chan_db_info['valueColors'].split('|')
     colors = []
     points_list = []
+    sizes = []
     for vc in value_colors:
-        v, c = vc.split(':')
+        vcs = vc.split(':')
+        v = vcs[0]
+        c = vcs[1]
+        s_desc = vcs[2] if len(vcs) > 2 else 'normal'
+        sizes.append(constants.SIZE_PIXEL_MAP[s_desc])
         if v == '*':
             val = v         # to have some value for pre_val = val
         else:
@@ -118,20 +124,20 @@ def get_categorized_data_from_value_color_equal_on_upper_bound(
                       if prev_val < data[i] <= val]
         points_list.append(points)
         prev_val = val
-    return points_list, colors
+    return points_list, colors, sizes
 
 
 def get_categorized_data_from_value_color_equal_on_lower_bound(
         c_data: Dict, chan_db_info: Dict
-) -> Tuple[List[List[float]], List[str]]:
+) -> Tuple[List[List[float]], List[str], List[float]]:
     """
     Separate data points and color using valueColors in which the condition
     will check if value equal to or greater than lower bound and less than
     upper bound as the following example:
-        <-1:not plot|<0:#FF0000|=0:#FF00FF  means:
+        <-1:not plot|<0:#FF0000|=0:#FF00FF:smaller  means:
             value < -1   => not plot
             -1 =< value < 0 => plot with #FF0000 color
-            value >= 0  => plot with #FF00FF color
+            value >= 0  => plot with #FF00FF color in a smaller
     :param c_data: dict of data of the channel which includes down-sampled
         data in keys 'times' and 'data'.
     :param chan_db_info: dict of info of channel from DB
@@ -143,8 +149,13 @@ def get_categorized_data_from_value_color_equal_on_lower_bound(
     value_colors = chan_db_info['valueColors'].split('|')
     colors = []
     points_list = []
+    sizes = []
     for vc in value_colors:
-        v, c = vc.split(':')
+        vcs = vc.split(':')
+        v = vcs[0]
+        c = vcs[1]
+        s_desc = vcs[2] if len(vcs) > 2 else 'normal'
+        sizes.append(constants.SIZE_PIXEL_MAP[s_desc])
         colors.append(c)
         val = get_val(v)
         times, data = c_data['times'][0], c_data['data'][0]
@@ -159,7 +170,7 @@ def get_categorized_data_from_value_color_equal_on_lower_bound(
                       if prev_val <= data[i] < val]
         points_list.append(points)
         prev_val = val
-    return points_list, colors
+    return points_list, colors, sizes
 
 
 def get_colors_sizes_for_abs_y_from_value_colors(
diff --git a/sohstationviewer/view/util/plot_type_info.py b/sohstationviewer/view/util/plot_type_info.py
index c90cd9473e76e005267afbafb683bd152f478fef..3a3420ace613bee1854bfbcf411f28747b9e3712 100644
--- a/sohstationviewer/view/util/plot_type_info.py
+++ b/sohstationviewer/view/util/plot_type_info.py
@@ -1,6 +1,12 @@
 import re
 
-color_regex = '#[0-9A-F]{6}'
+hexcolor_re = '#[0-9A-F]{6}'                        # Ex: #0F3A4C
+value_re = r'-?[0-9]\.?[0-9]?'                      # Ex: 0.1, -2.2, 3
+le_value_re = rf'<={value_re}'                      # Ex: <=0.1
+gt_value_re = rf'{value_re}<'                       # Ex: 0.1<
+le_gt_value_re = rf'({le_value_re}|{gt_value_re})'  # Ex: <=0.1|0.1<
+l_e_value_re = rf'[=<]{value_re}'                   # Ex: <0.1, =-0.1
+size_re = '(:((smaller)|(normal)|(bigger)))?'       # Ex: :smaller
 
 plot_types = {
         'linesDots': {
@@ -20,7 +26,7 @@ plot_types = {
             ),
             "plot_function": "plot_lines_dots",
             "value_pattern": re.compile('^(L|D|Z|Line|Dot|Zero)$'),
-            "pattern": re.compile(f'^$|^(?:Line|Dot|Zero):{color_regex}$'),
+            "pattern": re.compile(f'^$|^(?:Line|Dot|Zero):{hexcolor_re}$'),
             "default_value_color": "Line:#00CC00"
         },
         'linesSRate': {
@@ -41,7 +47,7 @@ plot_types = {
                 "value = 1 => plot on line y=1 with #0000FF color"),
             "plot_function": "plot_tri_colors",
             "value_pattern": re.compile('^-?[10]?$'),
-            "pattern": re.compile(f'^-?[10]:{color_regex}$'),
+            "pattern": re.compile(f'^-?[10]:{hexcolor_re}$'),
             "default_value_color": "-1:#FF0000|0:#00CC00|1:#0099DD",
             "total_value_color_required": 3
         },
@@ -52,7 +58,7 @@ plot_types = {
                 "Ex: Color:#00FF00"),
             "plot_function": "plot_dot_for_time",
             "value_pattern": re.compile('^C|(Color)$'),
-            "pattern": re.compile(f'^$|^Color:{color_regex}$'),
+            "pattern": re.compile(f'^$|^Color:{hexcolor_re}$'),
             "default_value_color": "Color:#00CC00",
             "total_value_color_required": 1
         },
@@ -64,11 +70,15 @@ plot_types = {
                 "   value <= -1   => not plot\n"
                 "   -1 < value <= 0 => plot with #FF0000 color\n"
                 "   0 < value  => plot with #FF00FF color\n"
+                "If the valueColor has arrow up (or the word 'bigger'),"
+                " the point size will be bigger\n"
+                "If the valueColor has arrow down (or the word 'smaller'),"
+                " the point size will be smaller\n"
             ),
             "plot_function": "plot_multi_color_dots_equal_on_upper_bound",
-            "value_pattern": re.compile(r'^(\+|<=)?[0-9]+\.?[0-9]?<?$'),
+            "value_pattern": re.compile(rf'^{le_gt_value_re}$'),
             "pattern": re.compile(
-                fr'^(\+|<=)?[0-9]+\.?[0-9]?<?:(?:{color_regex}|not plot)$'
+                fr'^{le_gt_value_re}:({hexcolor_re}|not plot){size_re}$'
             ),
             "default_value_color": "<=0:#FF0000|0<:#FF00FF"
         },
@@ -80,11 +90,15 @@ plot_types = {
                 "   value < -1   => not plot\n"
                 "   -1 =< value < 0 => plot with #FF0000 color\n"
                 "   value >= 0  => plot with #FF00FF color\n"
+                "If the valueColor has arrow up (or the word 'bigger'),"
+                " the point size will be bigger\n"
+                "If the valueColor has arrow down (or the word 'smaller'),"
+                " the point size will be smaller\n"
             ),
             "plot_function": "plot_multi_color_dots_equal_on_lower_bound",
-            "value_pattern": re.compile(r'^[=<]?[0-9]\.?[0-9]?$'),
+            "value_pattern": re.compile(rf'^{l_e_value_re}$'),
             "pattern": re.compile(
-                fr'^[=<]?[0-9]\.?[0-9]?:(?:{color_regex}|not plot)'
+                fr'^{l_e_value_re}:({hexcolor_re}|not plot){size_re}$'
             ),
             "default_value_color": "<0:#FF0000|=0:#00CC00"
         },
@@ -97,7 +111,7 @@ plot_types = {
                 "   value == 0 => plot under center line with #FF0000 color"),
             "plot_function": 'plot_up_down_dots',
             "value_pattern": re.compile("^(0|1|Up|Down)$"),
-            "pattern": re.compile(f"^(?:Up|Down):{color_regex}$"),
+            "pattern": re.compile(f"^(?:Up|Down):{hexcolor_re}$"),
             "default_value_color": "Down:#FF0000|Up:#00FFFF",
             "total_value_color_required": 2
         }
diff --git a/tests/view/db_config/test_param_helper.py b/tests/view/db_config/test_param_helper.py
index 00f6e63feb62ffa8996c097185da027a2f7b2be5..8c180cdbc9afd9af7053cebd23b29f3a007e313c 100644
--- a/tests/view/db_config/test_param_helper.py
+++ b/tests/view/db_config/test_param_helper.py
@@ -142,19 +142,19 @@ class TestValidateValueColorStr(BaseTestCase):
     def test_multi_color_dots_equal_on_upper_bound(self):
         with self.subTest("Valid value color string"):
             result = validate_value_color_str(
-                '<=0:not plot|<=1:#FFFF00|<=2:#00FF00|2<:#FF00FF',
+                '<=0:not plot|<=1:#FFFF00|<=2:#00FF00|2<:#FF00FF:smaller',
                 'multiColorDotsEqualOnUpperBound')
             self.assertEqual(result, (True, ''))
         with self.subTest("Repeated value"):
             result = validate_value_color_str(
-                '<=0:not plot|<=2:#FFFF00|<=2:#00FF00|2<:#FF00FF',
+                '<=0:not plot|<=2:#FFFF00|<=2:#00FF00:smaller|2<:#FF00FF',
                 'multiColorDotsEqualOnUpperBound')
             self.assertEqual(
                 result,
                 (False,
                  "Duplicated value '<=2' "
                  "in ValueColors string "
-                 "'<=0:not plot|<=2:#FFFF00|<=2:#00FF00|2<:#FF00FF' "
+                 "'<=0:not plot|<=2:#FFFF00|<=2:#00FF00:smaller|2<:#FF00FF' "
                  "isn't allowed."))
         with self.subTest("Disordered value"):
             result = validate_value_color_str(
diff --git a/tests/view/db_config/value_color_helper/test_functions.py b/tests/view/db_config/value_color_helper/test_functions.py
index c55a0de0173bde2c102962d88c99fed47cb7d772..91ae92c148c16192893ba515e1b2ef1d4c233532 100644
--- a/tests/view/db_config/value_color_helper/test_functions.py
+++ b/tests/view/db_config/value_color_helper/test_functions.py
@@ -1,121 +1,10 @@
 from sohstationviewer.view.db_config.value_color_helper.functions import (
-    convert_value_color_str, prepare_value_color_html
+    prepare_value_color_html
 )
 
 from tests.base_test_case import BaseTestCase
 
 
-class TestConvertValueColorStr(BaseTestCase):
-    def test_lines_dots(self):
-        with self.subTest("Old format of both line and dot value"):
-            expected_value_colors = "Line:#00FF00|Dot:#00FF00"
-            result = convert_value_color_str('linesDots', 'L:G|D:G')
-            self.assertEqual(result, expected_value_colors)
-        with self.subTest("Old format of line value"):
-            expected_value_colors = "Line:#00FF00"
-            result = convert_value_color_str('linesDots', 'L:G')
-            self.assertEqual(result, expected_value_colors)
-        with self.subTest("Old format of default value which is empty string"):
-            expected_value_colors = ""
-            result = convert_value_color_str('linesDots', '')
-            self.assertEqual(result, expected_value_colors)
-        with self.subTest("New format of both line and dot value"):
-            expected_value_colors = "Line:#00FF00|Dot:#00FF00"
-            result = convert_value_color_str('linesDots',
-                                             "Line:#00FF00|Dot:#00FF00")
-            self.assertEqual(result, expected_value_colors)
-        with self.subTest("New format of line value"):
-            expected_value_colors = "Line:#00FF00"
-            result = convert_value_color_str('linesDots', "Line:#00FF00")
-            self.assertEqual(result, expected_value_colors)
-
-    def test_up_down_dots(self):
-        with self.subTest("Old format"):
-            expected_value_colors = "Down:#FF0000|Up:#00FF00"
-            result = convert_value_color_str('upDownDots', '0:R|1:G')
-            self.assertEqual(result, expected_value_colors)
-        with self.subTest("New format"):
-            expected_value_colors = "Down:#FF0000|Up:#00FF00"
-            result = convert_value_color_str('upDownDots',
-                                             "Down:#FF0000|Up:#00FF00")
-            self.assertEqual(result, expected_value_colors)
-
-    def test_multi_color_dots_equal_on_upper_bound(self):
-        with self.subTest("Old format"):
-            expected_value_colors = ('<=0:not plot|<=1:#FFFF00|<=2:#00FF00'
-                                     '|2<:#FF00FF')
-            result = convert_value_color_str(
-                'multiColorDotsEqualOnUpperBound',
-                '0:_|1:Y|2:G|+2:M')
-            self.assertEqual(result, expected_value_colors)
-        with self.subTest("New format"):
-            expected_value_colors = ('<=0:not plot|<=1:#FFFF00|<=2:#00FF00'
-                                     '|2<:#FF00FF')
-            result = convert_value_color_str(
-                'multiColorDotsEqualOnUpperBound',
-                '<=0:not plot|<=1:#FFFF00|<=2:#00FF00|2<:#FF00FF')
-            self.assertEqual(result, expected_value_colors)
-
-    def test_multi_color_dots_equal_on_lower_bound(self):
-        with self.subTest("Old format"):
-            expected_value_colors = '<3:#FF0000|<3.3:#FFFF00|=3.3:#00FF00'
-            result = convert_value_color_str(
-                'multiColorDotsEqualOnLowerBound',
-                '3:R|3.3:Y|=3.3:G')
-            self.assertEqual(result, expected_value_colors)
-            with self.subTest("New format"):
-                expected_value_colors = '<3:#FF0000|<3.3:#FFFF00|=3.3:#00FF00'
-                result = convert_value_color_str(
-                    'multiColorDotsEqualOnLowerBound',
-                    '<3:#FF0000|<3.3:#FFFF00|=3.3:#00FF00')
-                self.assertEqual(result, expected_value_colors)
-
-    def test_tri_color_lines(self):
-        with self.subTest("Old format"):
-            expected_value_colors = '-1:#FF00FF|0:#FF0000|1:#00FF00'
-            result = convert_value_color_str(
-                'triColorLines',
-                '-1:M|0:R|1:G')
-            self.assertEqual(result, expected_value_colors)
-        with self.subTest("New format"):
-            expected_value_colors = '-1:#FF00FF|0:#FF0000|1:#00FF00'
-            result = convert_value_color_str(
-                'triColorLines',
-                '-1:#FF00FF|0:#FF0000|1:#00FF00')
-            self.assertEqual(result, expected_value_colors)
-
-    def test_incorrect_format(self):
-        with self.subTest("triColorLines"):
-            with self.assertRaises(ValueError):
-                convert_value_color_str(
-                    'triColorLines',
-                    '=1:M|*0:R|1.1:G')
-        with self.subTest("upDownDots"):
-            with self.assertRaises(ValueError):
-                convert_value_color_str(
-                    'upDownDots',
-                    '2:M|Line:R|1.1:G|L:Y')
-        with self.subTest("linesDots"):
-            with self.assertRaises(ValueError):
-                convert_value_color_str(
-                    'linesDots',
-                    '1:M|Up:R|1.1:G|L:Y')
-        with self.subTest("multiColorDotsEqualOnUpperBound"):
-            with self.assertRaises(ValueError):
-                convert_value_color_str(
-                    'multiColorDotsEqualOnUpperBound',
-                    '*3:#FF0000|<3.3:#FFFF00|=3.3:#00FF00')
-        with self.subTest("multiColorDotsEqualOnLowerBound"):
-            with self.assertRaises(ValueError):
-                convert_value_color_str(
-                    'multiColorDotsEqualOnLowerBound',
-                    '+0:R|-1:Y|<=2:G|2<:M')
-
-    def test_old_value_color_str_is_empty(self):
-        result = convert_value_color_str('linesSRate', '')
-        self.assertEqual(result, '')
-
-
 class TestPrepareValueColorHTML(BaseTestCase):
     def test_lines_dots(self):
         with self.subTest("Line and dot values"):
@@ -149,13 +38,13 @@ class TestPrepareValueColorHTML(BaseTestCase):
             "<p>&le;0:not plot"
             "|&le;1:"
             "<span style='color: #FFFF00; font-size:25px;'>&#8718;</span>"
-            "|&le;2:"
+            ":&#9650;|&le;2:"
             "<span style='color: #00FF00; font-size:25px;'>&#8718;</span>"
             "|2&lt;:"
             "<span style='color: #FF00FF; font-size:25px;'>&#8718;</span>"
             "</p>")
         result = prepare_value_color_html(
-            '<=0:not plot|<=1:#FFFF00|<=2:#00FF00|2<:#FF00FF')
+            '<=0:not plot|<=1:#FFFF00:bigger|<=2:#00FF00|2<:#FF00FF')
         self.assertEqual(result, expected_value_colors)
 
     def test_multi_color_dots_equal_on_lower_bound(self):
@@ -165,9 +54,9 @@ class TestPrepareValueColorHTML(BaseTestCase):
             "<span style='color: #FFFF00; font-size:25px;'>&#8718;</span>"
             "|=3.3:"
             "<span style='color: #00FF00; font-size:25px;'>&#8718;</span>"
-            "</p>")
+            ":&#9660;</p>")
         result = prepare_value_color_html(
-            '<3:not plot|<3.3:#FFFF00|=3.3:#00FF00')
+            '<3:not plot|<3.3:#FFFF00|=3.3:#00FF00:smaller')
         self.assertEqual(result, expected_value_colors)
 
     def test_tri_color_lines(self):
diff --git a/tests/view/plotting/plotting_widget/test_plotting_helper.py b/tests/view/plotting/plotting_widget/test_plotting_helper.py
index 762016eb87988fbdecfc382e5e8e02e6343a2ddc..943a80c62bf6f0b44ee02647039f696942079384 100644
--- a/tests/view/plotting/plotting_widget/test_plotting_helper.py
+++ b/tests/view/plotting/plotting_widget/test_plotting_helper.py
@@ -10,6 +10,7 @@ from sohstationviewer.view.plotting.plotting_widget.plotting_helper import (
     apply_convert_factor
 )
 from sohstationviewer.view.util.color import clr
+from sohstationviewer.conf import constants
 from tests.base_test_case import BaseTestCase
 
 
@@ -113,36 +114,48 @@ class TestGetCategorizedDataFromValueColorEqualOnUpperBound(BaseTestCase):
 
     def test_equal_on_upper_bound(self):
         chan_db_info = {
-            'valueColors': '<=3:#FF0000|<=3.3:#00FFFF|3.3<:#00FF00'
+            'valueColors': '<=3:#FF0000:bigger|<=3.3:#00FFFF|3.3<:#00FF00'
         }
-        points_list, colors = \
+        points_list, colors, sizes = \
             get_categorized_data_from_value_color_equal_on_upper_bound(
                 self.c_data, chan_db_info)
         self.assertEqual(points_list, [[0, 1], [2, 3], [4]])
         self.assertEqual(colors, ['#FF0000', '#00FFFF', '#00FF00'])
+        self.assertEqual(sizes,
+                         [constants.SIZE_PIXEL_MAP['bigger'],
+                          constants.SIZE_PIXEL_MAP['normal'],
+                          constants.SIZE_PIXEL_MAP['normal']])
 
     def test_not_plot(self):
         chan_db_info = {
             'valueColors': '<=3:not plot|<=3.3:#00FFFF|3.3<:#00FF00'
         }
-        points_list, colors = \
+        points_list, colors, sizes = \
             get_categorized_data_from_value_color_equal_on_upper_bound(
                 self.c_data, chan_db_info)
         self.assertEqual(points_list, [[2, 3], [4]])
         self.assertEqual(colors, ['#00FFFF', '#00FF00'])
+        self.assertEqual(sizes,
+                         [constants.SIZE_PIXEL_MAP['normal'],
+                          constants.SIZE_PIXEL_MAP['normal'],
+                          constants.SIZE_PIXEL_MAP['normal']])
 
 
 class TestGetCategorizedDataFromValueColorEqualOnLowerBound(BaseTestCase):
     def test_equal_on_lower_bound(self):
         c_data = {'times': [[0, 1, 2, 3, 4]],
                   'data': [[1, 3, 3.2, 3.3, 3.4]]}
-        chan_db_info = {'valueColors': '3:R|3.3:Y|=3.3:G'}
-        points_list, colors = \
+        chan_db_info = {'valueColors': '3:R|3.3:Y|=3.3:G:smaller'}
+        points_list, colors, sizes = \
             get_categorized_data_from_value_color_equal_on_lower_bound(
                 c_data, chan_db_info)
 
         self.assertEqual(points_list, [[0], [1, 2], [3, 4]])
         self.assertEqual(colors, ['R', 'Y', 'G'])
+        self.assertEqual(sizes,
+                         [constants.SIZE_PIXEL_MAP['normal'],
+                          constants.SIZE_PIXEL_MAP['normal'],
+                          constants.SIZE_PIXEL_MAP['smaller']])
 
 
 class TestGetColorsSizesForAbsYFromValueColors(BaseTestCase):