Blood pressure (BP) is an indicator of hypertension. We developed a system in which photoplethysmogram (PPG), which is commonly integrated in modern wearables, is used to continuously estimate BP. A preprocessing module was developed and used for cleaning the PPG signal of noise and artefacts, and segmenting it into cycles. A set of features describing the PPG signal was then computed to be used in regression models. The RReliefF algorithm was used to select a subset of relevant features and personalization of the models was considered to further improve the performance of the models. The approach was validated using two distinct datasets, one from a hospital environment, and the other collected during every-day activities. Using the clinical dataset (MIMIC database), the best achieved mean absolute errors (MAE) in a leave-one-subject-out (LOSO) experiment were 5.61 mmHg for systolic and 3.82 mmHg for diastolic BP, at maximum personalization. For everyday-life dataset, the lowest errors were 8.40 mmHg for systolic and 4.20 mmHg for diastolic BP. Deep learning regression and Random Forest algorithm achieved the best results. Our results borderline meet the requirements of the two most well-established standards for BP estimation devices.